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

ΑΛΟΡΙΘΜΟΙ · 2015. 9. 9. · Αλγόριθμος QuickHull (2) •πολογισμός του κυρτού (επάνω)περιβλήματος για το S 1 –ρίσκουμε

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: ΑΛΟΡΙΘΜΟΙ · 2015. 9. 9. · Αλγόριθμος QuickHull (2) •πολογισμός του κυρτού (επάνω)περιβλήματος για το S 1 –ρίσκουμε

ΑΡΙΣΤΟΤΕΛΕΙΟ

ΠΑΝΕΠΙΣΤΗΜΙΟ

ΘΕΣΣΑΛΟΝΙΚΗΣ

ΑΝΟΙΚΤΑ

ΑΚΑΔΗΜΑΪΚΑ

ΜΑΘΗΜΑΤΑ

ΑΛΓΟΡΙΘΜΟΙ

Ενότητα 4 Διαίρει και Βασίλευε

Ιωάννης Μανωλόπουλος Καθηγητής Αναστάσιος Γούναρης Επίκουρος Καθηγητής

Τμήμα Πληροφορικής ΑΠΘ

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Άδειες Χρήσης

bull Το παρόν εκπαιδευτικό υλικό υπόκειται σεάδειες χρήσης Creative Commons

bull Για εκπαιδευτικό υλικό όπως εικόνες που υπόκειται σε άλλου τύπου άδειας χρήσης η άδεια χρήσης αναφέρεται ρητώς

2

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Χρηματοδότηση

bull Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα

bull Το έργο laquoΑνοικτά Ακαδημαϊκά Μαθήματα στο Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκηςraquo έχει χρηματοδοτήσει μόνο τη αναδιαμόρφωση του εκπαιδευτικού υλικού

bull Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος laquoΕκπαίδευση και Δια Βίου Μάθησηraquo και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους

3

ΑΡΙΣΤΟΤΕΛΕΙΟ

ΠΑΝΕΠΙΣΤΗΜΙΟ

ΘΕΣΣΑΛΟΝΙΚΗΣ

ΑΝΟΙΚΤΑ

ΑΚΑΔΗΜΑΪΚΑ

ΜΑΘΗΜΑΤΑ

Διαίρει και Βασίλευε

Ταξινόμηση με Συγχώνευση Γρήγορη Ταξινόμηση Πολλαπλασιασμός κατά

Strassen Quickhull Διάσχιση Δένδρων

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Διαίρει και Βασίλευε

Η γνωστότερη μέθοδος σχεδιασμού αλγορίθμων

1 Διαιρούμε το στιγμιότυπο του προβλήματος σε δύο ή περισσότερα μικρότερα στιγμιότυπα

2 Επιλύουμε τα μικρότερα στιγμιότυπα αναδρομικά

3 Βρίσκουμε τη λύση στο αρχικό (μεγαλύτερο) στιγμιότυπο συνδυάζοντας αυτές τις λύσεις

5

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

υποπρόβλημα 2 μεγέθους n2

υποπρόβλημα 1 μεγέθους n2

μία λύση για το υποπρόβλημα 1

Η λύση για το αρχικό πρόβλημα

μία λύση για το υποπρόβλημα 2

Πρόβλημαμεγέθους n

Διαίρει και Βασίλευε

6

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Παραδείγματα Διαίρει και Βασίλευε

bull Ταξινόμηση με συγχώνευση και γρήγορη ταξινόμηση

bull Διασχίσεις δένδρων

bull Δυαδική αναζήτηση ()

bull Πολλαπλασιασμός πινάκων ndash Αλγόριθμος του Strassen

bull Κυρτό περίβλημα - Αλγόριθμος QuickHull

7

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Γενική αναδρομή του Διαίρει και Βασίλευε

T(n) = aT(nb) + f (n) όπου f (n) isin Θ(nk) kge0

1 a lt bk T(n) isin Θ(nk)

2 a = bk T(n) isin Θ(nk lg n )

3 a gt bk T(n) isin Θ(nlog b a)

Σημείωση το ίδιο αποτέλεσμα ισχύει για το συμβολισμό O αντί για το Θ

8

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Ταξινόμηση με συγχώνευση (1)

Αλγόριθμος

bull Διαιρούμε τον πίνακα A[1n] σε δύο τμήματα και αντιγράφουμε το καθένα στους πίνακες B[1 n2 ] και C[1 n2 ]

bull Ταξινομούμε τους πίνακες B και C

bull Συγχωνεύουμε τους πίνακες B και C στον πίνακα A ως εξήςndash Επαναλαμβάνουμε μέχρι να μη μείνει κάποιο στοιχείο σε έναν από

τους πίνακες

bull Συγκρίνουμε τα πρώτα στοιχεία στα εναπομένοντα μη επεξεργασμένα τμήματα των πινάκων

bull Αντιγράφουμε το μικρότερο από τα δύο στοιχεία στον πίνακα A ενώ αυξάνουνε το δείκτη προς το μη επεξεργασμένο τμήμα του

ndash Όταν επεξεργασθούμε όλα τα στοιχεία του ενός πίνακα τότε αντιγράφουμε στον πίνακα Α τα υπόλοιπα μη επεξεργασθέντα στοιχεία από τον άλλο πίνακα

9

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Ταξινόμηση με συγχώνευση (2)

10

Algorithm Mergesort(A[0n-1]) Sorts array A[0n-1] by recursive mergesort

Input An array A[0n-1] of orderable elements

Output Array A[0n-1] sorted in nondecreasing

order

if ngt1

copy A[0n2-1] to B[0n2-1]

copy A[n2n-1] to C[0n2-1]

Mergesort(B[0n2-1])

Mergesort(C[0n2-1])

Merge(B C A)

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Ταξινόμηση με συγχώνευση (3)

11

Algorithm Merge(B[0p-1] C[0q-1] A[0p+q-1])

Merges two sorted arrays into one sorted array

Input Arrays B[0p-1] and C[0q-1] both sorted

Output Sorted array A[0p+q-1] of the elements of B and C

i 0 j 0 k 0

while i lt p and j lt q do

if B[i] le C[j] A[k] B[i] i++

else A[k] C[j] j++

k++

if i = p copy C[jq-1] to A[kp+q-1]

else copy B[ip-1] to A[kp+q-1]

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Ταξινόμηση με συγχώνευση (4)

12

4 2 8 1 3 9 5 6

4 2 8 1 3 9 5 6

4 2 8 1 3 9 5 6

4 2 8 1 3 9 5 6

2 4 1 8 3 9 5 6

1 2 4 8 3 5 6 9

1 2 3 4 5 6 8 9

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αποδοτικότητα της ταξινόμησης με συγχώνευση

bull C(n) = 2 C(n2) + Cmerge(n) for ngt1 C(1)=0

bull Όλες οι περιπτώσεις έχουν την ίδια αποδοτικότητα Θ(n log n)

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

ndash log n asymp n lg n - 144 n

bull Απαιτήσεις χώρου Θ(n) (δεν είναι in-place)

bull Μπορεί να υλοποιηθεί χωρίς αναδρομή (bottom-up)

13

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Γρήγορη Ταξινόμηση (1)

bull Επιλέγουμε ένα αξονικό στοιχείο ως άξονα (το στοιχείο της διαμέρισης)

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

bull Ανταλλάσουμε τον άξονα με το τελευταίο στοιχείο της πρώτης λίστας (δηλαδή τη λίστα le ) οπότε ο άξονας λαμβάνει την τελική του θέση

bull Ταξινομούμε τις δύο λίστες

14

p

A[i]lep A[i]gtp

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Γρήγορη Ταξινόμηση (2)

Algorithm Quicksort(A[lr]) Input an array A[0n-1] of orderable

elements

Output Array A[0n-1] sorted ascendingly

if lltr

s partition(A[lr])

quicksort(A[ls-1])

quicksort(A[s+1r])

15

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Γρήγορη Ταξινόμηση (3)

Algorithm Partition(A[lr]) Partitions a subarray by using its first

element as pivot Input a subarray A[lr] lltr Output A partition of A[lr] with the

split position returned as this functionrsquos value

pA[l] il jr+1repeat

repeat ii+1 until A[i]geprepeat jj-1 until A[j]lepswap(A[i]A[j])

until igejswap(A[i]A[j]) εξουδετέρωση αλλαγής όταν

igejswap(A[l]A[j])return j

16

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Γρήγορη Ταξινόμηση (4)

Παράδειγμα

5 3 1 9 8 2 4 7

Ποιά είναι η σειρά των κλήσεων συναρτήσεων

17

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Γρήγορη Ταξινόμηση (5)

bull Καλύτερη περίπτωση χωρισμός στη μέση mdash Θ(n log n)

bull Χειρότερη περίπτωση ταξινομημένος πίνακας mdash Θ(n2)

bull Μέση περίπτωση τυχαίος πίνακας mdash Θ(n log n)

bull Βελτιώσεις

ndash Καλύτερη επιλογή του άξονα το μεσαίο από 3 στοιχεία αποφεύγει τη χειρότερη περίπτωση σε ταξινομημένα αρχεία

ndash Γυρνούμε σε ταξινόμηση με εισαγωγή για μικρά υποαρχεία

ndash Αποφεύγουμε την αναδρομή

Μπορούν να δώσουν βελτίωση μέχρι 20-25

bull Θεωρείται η καλύτερη μέθοδος για εσωτερική ταξινόμηση μεγάλων αρχείων (n ge 10000)

18

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Πολλαπλασιασμός μεγάλων ακεραίων (1)

bull Για να πολλαπλασιάσουμε δύο ακεραίους με n1 και n2 ψηφία με το χέρι θα εκτελέσουμε n1n2 πράξεις πολλαπλασιασμού

bull Πρόβλημα όταν έχουμε πολλά ψηφία

ndash A = 12345678901357986429 B = 87654321284820912836

bull Ας δούμε ένα απλούστερο παράδειγμα 2314

- Όμως 23 = 2101+3100 14 = 1101+4100

- Άρα 2314 = (21)102 +(24+31)101 + (34) 100

bull Αν A = 2135 B = 4014

ΑΒ= (21 middot102 + 35) (40 middot102 + 14)

= 21 40 middot104 + (21 14 + 35 40) middot102 + 35 14

19

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Πολλαπλασιασμός μεγάλων ακεραίων (2)

bull Βασική παρατήρηση

α) 2314 = (21)102 +(24+31)101 + (34) 100

= (21)102 +[(2+3)(1+4)-21-34]101 + (34) 100

bull β) 2135 4014 = 21 40 middot104 + (21 14 + 35 40) middot102 + 35 14

= 21 40 middot104 + [(21+35) (40+14) ndash 2140-3514] middot102 + 35 14

bull Γενικώς a=a1a0 b=b1b0 και ζητείται c=ab c = ab = c210n + c1

10n2

+ c0100 όπου c2=a1b1 c0=a0b0 c1=(a1+a0)(b1+b0)-(c2+c0)

bull Αναδρομική εξίσωση M(n) = 3M(n2) M(1) = 1

bull Αποδοτικότητα M(n) = 3log 2n = nlog 23 asymp n1585

20

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Πολλαπλασιασμός πινάκων αλά Strassen

bull Ο Strassen παρατήρησε [1969] ότι το γινόμενο δύο πινάκων A και B (μεγέθους2nx2n) μπορεί να υπολογισθεί ως εξής

C00 1198620111986210 11986211

=A00 1198600111986010 11986011

lowastB00 1198610111986110 11986111

1198721+1198724minus1198725+1198727 1198723+1198725

1198722+1198724 1198721+1198723minus1198722+1198726

21

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Υποπίνακες του Strassen

bull M1 = (A00 + A11) (B00 + B11)

bull M2 = (A10 + A11) B00

bull M3 = A00 (B01 - B11)

bull M4 = A11 (B10 - B00)

bull M5 = (A00 + A01) B11

bull M6 = (A10 - A00) (B00 + B01)

bull M7 = (A01 - A11) (B10 + B11)

22

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αποδοτικότητα του αλγορίθμου Strassen

bull Αν το n δεν είναι δύναμη του 2 τότε οι πίνακες παραγεμίζονται με μηδενικά

bull Πλήθος πολλαπλασιασμών

bull Πλήθος προσθέσεων

bull Αναδρομή

bull Άλλοι αλγόριθμοι έχουν βελτιώσει αυτό το αποτέλεσμα αλλά είναι ακόμη περισσότεροι σύνθετοι

23

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Το πρόβλημα του πλησιέστερου ζεύγους

bull Πρόβλημα βρες τα πλησιέστερα σημεία μεταξύ n σημείων σε ένα k-διάστατο χώρο

bull Υποθέτουμε ότι τα σημεία ταξινομούνται με βάση τις τιμές των τετμημένων x

bull Διαιρούμε τα σημεία σε δύο υποσύνολα S1 και S2 με n2 σημεία με βάση μία κατακόρυφη γραμμή στο x=c

bull Επιλέγουμε το πλησιέστερο ζεύγος μεταξύ των ζευγών του αριστερού υποσυνόλου (απόσταση d1) μεταξύ των ζευγών του δεξιού υποσυνόλου (απόσταση d2) και το πλησιέστερο ζεύγος με σημεία και από τις δύο πλευρές

bull Πρέπει να εξετάσουμε μία λωρίδα πλάτους 2d όπουd=min[d1d2]

24

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Το πρόβλημα του πλησιέστερου ζεύγους (2)

bull Γεωμετρική εξήγηση

bull Αναδρομή T(n) = 2T(n2) + M(n)

bull Αποδοτικότητα O(n logn)

bull Βελτιστότητα

25

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αλγόριθμος QuickHull

Υπολογίζει το Κυρτό Περίβλημα με έμπνευση από τη Γρήγορη Ταξινόμηση

bull Υποθέτουμε ότι τα σημεία είναι ταξινομημένα ως προς την συντεταγμένη x

bull Προσδιορίζουμε δύο ακραία σημαία P1 και P2 (μέρη του περιβλήματος)

bull Το σύνολο σημείων S διαιρείται σε δύο υποσύνολα S1 και S2

bull Υπολογίζουμε το κυρτό περίβλημα για το S1

bull Ομοίως υπολογίζουμε το κυρτό περίβλημα για το S1

26

P1

P2

Pmax

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αλγόριθμος QuickHull (2)

bull Υπολογισμός του κυρτού (επάνω) περιβλήματος για το S1

ndashΒρίσκουμε το πιο απομακρυσμένο σημείο Pmax από τη γραμμή P1P2

ndash Υπολογίζουμε το περίβλημα για τα σημεία αριστερά της γραμμής P1Pmax

ndash Υπολογίζουμε το περίβλημα για τα σημεία αριστερά της γραμμής PmaxP2

bull Εύρεση του σημείου Pmax

ndash Το Pmax μεγιστοποιεί την επιφάνεια του τριγώνου PmaxP1P2

ndash Σε περίπτωση ισοπαλίας επιλέγεται το Pmax που μεγιστοποιεί τη γωνία PmaxP1P2

bull Τα σημεία μέσα στο τρίγωνο PmaxP1P2 αγνοούνται εφεξής

bull Πως θα βρεθεί γεωμετρικά το σημείο Pmax και τα σημεία στα αριστερά της γραμμής P1Pmax

27

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αλγόριθμος QuickHull (3)

28

bull Πως θα βρεθεί γεωμετρικά το σημείο Pmax και τα σημεία στα αριστερά της γραμμής P1Pmax

ndash Δίνονται τα σημεία P1(x1y1) P2(x2y2) Pmax(xmaxymax)

ndash Το εμβαδόν του τριγώνου είναι μισό του μεγέθους της ορίζουσας

1199091 1199101 11199092 1199102 1119909119898119886119909 119910119898119886119909 1

= x1y2+xmaxy1+x2ymaxndashxmaxy2ndashx2y1-x1ymax

ndash Το πρόσημο της έκφρασης είναι θετικό αν και μόνο αν το σημείο Pmax

είναι στα αριστερά της γραμμής P1P2

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αποδοτικότητα Αλγορίθμου QuickHull (4)

bull Η εύρεση του πλέον απομακρυσμένου σημείου από την ευθεία P1P2 μπορεί να βρεθεί σε γραμμικό χρόνο

bull Έτσι προκύπτει η ίδια πολυπλοκότητα με τη γρήγορη ταξινόμησηndash Χειρότερη περίπτωση Θ(n2)

ndash Μέση περίπτωση Θ(n log n)

bull Αν τα σημεία δεν είναι αρχικά ταξινομημένα στον άξονα x αυτό επιτυγχάνεται με κόστος Θ(n log n)

bull Άλλοι αλγόριθμοι για το κυρτό περίβλημαndash Σάρωση του Graham DCHull

Επίσης σε Θ(n log n)

29

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Δυαδική Αναζήτηση

Πολύ αποδοτικός αλγόριθμος για αναζήτηση σε ταξινομημένο πίνακα

K

vs

A[0] A[m] A[n-1]

Αν K = A[m] σταμάτησε (επιτυχημένη αναζήτηση Διαφορετικά συνέχισε την αναζήτηση με όμοιο τρόπο στον πίνακα A[0m-1] αν K lt A[m] ή στον A[m+1n-1] αν K gt A[m]

l 0 r n-1

while l r do

m (l+r)2

if K = A[m] return m

else if K lt A[m] r m-1

else l m+1

return -1

30

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Ανάλυση Δυαδικής Αναζήτησης

bull Χρονική αποδοτικότηταndash Χειρότερη περίπτωση Cw (n) = 1 + Cw( n2 ) Cw (1) = 1

ndash Λύση Cw(n) = log2(n+1)

Αυτό είναι πολύ γρήγορο πχ Cw(106) = 20

bull Βέλτιστη μέθοδος για αναζήτηση σε ταξινομημένο πίνακα

bull Περιορισμοί η είσοδος πρέπει να είναι ταξινομημένη και στη μορφή πίνακα όχι πχ συνδεδεμένη λίστα

bull ΟΧΙ καλό παράδειγμα τεχνικής laquoδιαίρει και βασίλευεraquo

bull Υπάρχει ανάλογη τεχνική για τη συνεχή περίπτωση

31

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

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

Τα δυαδικά δένδρα έχουν έτοιμη τη δομή για αλγορίθμους διαίρει και βασίλευε

Πχ κλασικές διασχίσεις (προμεταενδο-διατεταγμένη)

Algorithm Inorder(T)

if T

Inorder(Tleft)

print(root of T)

Inorder(Tright)

ΑποδοτικότηταΘ(n)

32

a

b c

d e

a

b c

d e

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αλγόριθμοι Δυαδικών Δένδρων (2)

33

Άλλο παράδειγμα υπολογισμός ύψους

bull h(T) = maxh(TL) h(TR) + 1 if T and h() = -1

bull Αποδοτικότητα Θ(n)

TL TR

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Σημείωμα Αναφοράς

Copyright Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Ιωάννης Μανωλόπουλος Αναστάσιος Γούναρης laquoΑλγόριθμοι raquo Έκδοση 10 Θεσσαλονίκη 2015 Διαθέσιμο από τη δικτυακή διεύθυνσηhttpeclassauthgrcoursesOCRS417

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons Αναφορά -Μη Εμπορική Χρήση - Παρόμοια Διανομή 40 [1] ή μεταγενέστερη Διεθνής Έκδοση Εξαιρούνται τα αυτοτελή έργα τρίτων πχ φωτογραφίες διαγράμματα κλπ τα οποία εμπεριέχονται σε αυτό και τα οποία αναφέρονται μαζί με τους όρους χρήσης τους στο laquoΣημείωμα Χρήσης Έργων Τρίτωνraquo

Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο

για εμπορική χρήση εφόσον αυτό του ζητηθεί

Ως Μη Εμπορική ορίζεται η χρήση

bull που δεν περιλαμβάνει άμεσο ή έμμεσο οικονομικό όφελος από την χρήση του έργου για το διανομέα του έργου και αδειοδόχο

bull που δεν περιλαμβάνει οικονομική συναλλαγή ως προϋπόθεση για τη χρήση ή πρόσβαση στο έργο

bull που δεν προσπορίζει στο διανομέα του έργου και αδειοδόχο έμμεσο οικονομικό όφελος (πχ διαφημίσεις) από την προβολή του έργου σε διαδικτυακό τόπο

[1] httpcreativecommonsorglicensesby-nc-sa40

Σημείωμα Αδειοδότησης

ΑΡΙΣΤΟΤΕΛΕΙΟ

ΠΑΝΕΠΙΣΤΗΜΙΟ

ΘΕΣΣΑΛΟΝΙΚΗΣ

ΑΝΟΙΚΤΑ

ΑΚΑΔΗΜΑΪΚΑ

ΜΑΘΗΜΑΤΑ

Τέλος ενότητας

Επεξεργασία Ανδρέας ΚοσματόπουλοςΘεσσαλονίκη Αύγουστος 2015

ΑΡΙΣΤΟΤΕΛΕΙΟ

ΠΑΝΕΠΙΣΤΗΜΙΟ

ΘΕΣΣΑΛΟΝΙΚΗΣ

Σημειώματα

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Σημείωμα Ιστορικού Εκδόσεων Έργου

Το παρόν έργο αποτελεί την έκδοση 100

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Διατήρηση Σημειωμάτων

Οποιαδήποτε αναπαραγωγή ή διασκευή του υλικού θα πρέπει να συμπεριλαμβάνει

το Σημείωμα Αναφοράς

το Σημείωμα Αδειοδότησης

τη δήλωση Διατήρησης Σημειωμάτων

το Σημείωμα Χρήσης Έργων Τρίτων (εφόσον υπάρχει)

μαζί με τους συνοδευόμενους υπερσυνδέσμους

Page 2: ΑΛΟΡΙΘΜΟΙ · 2015. 9. 9. · Αλγόριθμος QuickHull (2) •πολογισμός του κυρτού (επάνω)περιβλήματος για το S 1 –ρίσκουμε

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Άδειες Χρήσης

bull Το παρόν εκπαιδευτικό υλικό υπόκειται σεάδειες χρήσης Creative Commons

bull Για εκπαιδευτικό υλικό όπως εικόνες που υπόκειται σε άλλου τύπου άδειας χρήσης η άδεια χρήσης αναφέρεται ρητώς

2

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Χρηματοδότηση

bull Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα

bull Το έργο laquoΑνοικτά Ακαδημαϊκά Μαθήματα στο Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκηςraquo έχει χρηματοδοτήσει μόνο τη αναδιαμόρφωση του εκπαιδευτικού υλικού

bull Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος laquoΕκπαίδευση και Δια Βίου Μάθησηraquo και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους

3

ΑΡΙΣΤΟΤΕΛΕΙΟ

ΠΑΝΕΠΙΣΤΗΜΙΟ

ΘΕΣΣΑΛΟΝΙΚΗΣ

ΑΝΟΙΚΤΑ

ΑΚΑΔΗΜΑΪΚΑ

ΜΑΘΗΜΑΤΑ

Διαίρει και Βασίλευε

Ταξινόμηση με Συγχώνευση Γρήγορη Ταξινόμηση Πολλαπλασιασμός κατά

Strassen Quickhull Διάσχιση Δένδρων

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Διαίρει και Βασίλευε

Η γνωστότερη μέθοδος σχεδιασμού αλγορίθμων

1 Διαιρούμε το στιγμιότυπο του προβλήματος σε δύο ή περισσότερα μικρότερα στιγμιότυπα

2 Επιλύουμε τα μικρότερα στιγμιότυπα αναδρομικά

3 Βρίσκουμε τη λύση στο αρχικό (μεγαλύτερο) στιγμιότυπο συνδυάζοντας αυτές τις λύσεις

5

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

υποπρόβλημα 2 μεγέθους n2

υποπρόβλημα 1 μεγέθους n2

μία λύση για το υποπρόβλημα 1

Η λύση για το αρχικό πρόβλημα

μία λύση για το υποπρόβλημα 2

Πρόβλημαμεγέθους n

Διαίρει και Βασίλευε

6

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Παραδείγματα Διαίρει και Βασίλευε

bull Ταξινόμηση με συγχώνευση και γρήγορη ταξινόμηση

bull Διασχίσεις δένδρων

bull Δυαδική αναζήτηση ()

bull Πολλαπλασιασμός πινάκων ndash Αλγόριθμος του Strassen

bull Κυρτό περίβλημα - Αλγόριθμος QuickHull

7

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Γενική αναδρομή του Διαίρει και Βασίλευε

T(n) = aT(nb) + f (n) όπου f (n) isin Θ(nk) kge0

1 a lt bk T(n) isin Θ(nk)

2 a = bk T(n) isin Θ(nk lg n )

3 a gt bk T(n) isin Θ(nlog b a)

Σημείωση το ίδιο αποτέλεσμα ισχύει για το συμβολισμό O αντί για το Θ

8

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Ταξινόμηση με συγχώνευση (1)

Αλγόριθμος

bull Διαιρούμε τον πίνακα A[1n] σε δύο τμήματα και αντιγράφουμε το καθένα στους πίνακες B[1 n2 ] και C[1 n2 ]

bull Ταξινομούμε τους πίνακες B και C

bull Συγχωνεύουμε τους πίνακες B και C στον πίνακα A ως εξήςndash Επαναλαμβάνουμε μέχρι να μη μείνει κάποιο στοιχείο σε έναν από

τους πίνακες

bull Συγκρίνουμε τα πρώτα στοιχεία στα εναπομένοντα μη επεξεργασμένα τμήματα των πινάκων

bull Αντιγράφουμε το μικρότερο από τα δύο στοιχεία στον πίνακα A ενώ αυξάνουνε το δείκτη προς το μη επεξεργασμένο τμήμα του

ndash Όταν επεξεργασθούμε όλα τα στοιχεία του ενός πίνακα τότε αντιγράφουμε στον πίνακα Α τα υπόλοιπα μη επεξεργασθέντα στοιχεία από τον άλλο πίνακα

9

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Ταξινόμηση με συγχώνευση (2)

10

Algorithm Mergesort(A[0n-1]) Sorts array A[0n-1] by recursive mergesort

Input An array A[0n-1] of orderable elements

Output Array A[0n-1] sorted in nondecreasing

order

if ngt1

copy A[0n2-1] to B[0n2-1]

copy A[n2n-1] to C[0n2-1]

Mergesort(B[0n2-1])

Mergesort(C[0n2-1])

Merge(B C A)

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Ταξινόμηση με συγχώνευση (3)

11

Algorithm Merge(B[0p-1] C[0q-1] A[0p+q-1])

Merges two sorted arrays into one sorted array

Input Arrays B[0p-1] and C[0q-1] both sorted

Output Sorted array A[0p+q-1] of the elements of B and C

i 0 j 0 k 0

while i lt p and j lt q do

if B[i] le C[j] A[k] B[i] i++

else A[k] C[j] j++

k++

if i = p copy C[jq-1] to A[kp+q-1]

else copy B[ip-1] to A[kp+q-1]

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Ταξινόμηση με συγχώνευση (4)

12

4 2 8 1 3 9 5 6

4 2 8 1 3 9 5 6

4 2 8 1 3 9 5 6

4 2 8 1 3 9 5 6

2 4 1 8 3 9 5 6

1 2 4 8 3 5 6 9

1 2 3 4 5 6 8 9

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αποδοτικότητα της ταξινόμησης με συγχώνευση

bull C(n) = 2 C(n2) + Cmerge(n) for ngt1 C(1)=0

bull Όλες οι περιπτώσεις έχουν την ίδια αποδοτικότητα Θ(n log n)

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

ndash log n asymp n lg n - 144 n

bull Απαιτήσεις χώρου Θ(n) (δεν είναι in-place)

bull Μπορεί να υλοποιηθεί χωρίς αναδρομή (bottom-up)

13

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Γρήγορη Ταξινόμηση (1)

bull Επιλέγουμε ένα αξονικό στοιχείο ως άξονα (το στοιχείο της διαμέρισης)

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

bull Ανταλλάσουμε τον άξονα με το τελευταίο στοιχείο της πρώτης λίστας (δηλαδή τη λίστα le ) οπότε ο άξονας λαμβάνει την τελική του θέση

bull Ταξινομούμε τις δύο λίστες

14

p

A[i]lep A[i]gtp

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Γρήγορη Ταξινόμηση (2)

Algorithm Quicksort(A[lr]) Input an array A[0n-1] of orderable

elements

Output Array A[0n-1] sorted ascendingly

if lltr

s partition(A[lr])

quicksort(A[ls-1])

quicksort(A[s+1r])

15

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Γρήγορη Ταξινόμηση (3)

Algorithm Partition(A[lr]) Partitions a subarray by using its first

element as pivot Input a subarray A[lr] lltr Output A partition of A[lr] with the

split position returned as this functionrsquos value

pA[l] il jr+1repeat

repeat ii+1 until A[i]geprepeat jj-1 until A[j]lepswap(A[i]A[j])

until igejswap(A[i]A[j]) εξουδετέρωση αλλαγής όταν

igejswap(A[l]A[j])return j

16

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Γρήγορη Ταξινόμηση (4)

Παράδειγμα

5 3 1 9 8 2 4 7

Ποιά είναι η σειρά των κλήσεων συναρτήσεων

17

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Γρήγορη Ταξινόμηση (5)

bull Καλύτερη περίπτωση χωρισμός στη μέση mdash Θ(n log n)

bull Χειρότερη περίπτωση ταξινομημένος πίνακας mdash Θ(n2)

bull Μέση περίπτωση τυχαίος πίνακας mdash Θ(n log n)

bull Βελτιώσεις

ndash Καλύτερη επιλογή του άξονα το μεσαίο από 3 στοιχεία αποφεύγει τη χειρότερη περίπτωση σε ταξινομημένα αρχεία

ndash Γυρνούμε σε ταξινόμηση με εισαγωγή για μικρά υποαρχεία

ndash Αποφεύγουμε την αναδρομή

Μπορούν να δώσουν βελτίωση μέχρι 20-25

bull Θεωρείται η καλύτερη μέθοδος για εσωτερική ταξινόμηση μεγάλων αρχείων (n ge 10000)

18

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Πολλαπλασιασμός μεγάλων ακεραίων (1)

bull Για να πολλαπλασιάσουμε δύο ακεραίους με n1 και n2 ψηφία με το χέρι θα εκτελέσουμε n1n2 πράξεις πολλαπλασιασμού

bull Πρόβλημα όταν έχουμε πολλά ψηφία

ndash A = 12345678901357986429 B = 87654321284820912836

bull Ας δούμε ένα απλούστερο παράδειγμα 2314

- Όμως 23 = 2101+3100 14 = 1101+4100

- Άρα 2314 = (21)102 +(24+31)101 + (34) 100

bull Αν A = 2135 B = 4014

ΑΒ= (21 middot102 + 35) (40 middot102 + 14)

= 21 40 middot104 + (21 14 + 35 40) middot102 + 35 14

19

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Πολλαπλασιασμός μεγάλων ακεραίων (2)

bull Βασική παρατήρηση

α) 2314 = (21)102 +(24+31)101 + (34) 100

= (21)102 +[(2+3)(1+4)-21-34]101 + (34) 100

bull β) 2135 4014 = 21 40 middot104 + (21 14 + 35 40) middot102 + 35 14

= 21 40 middot104 + [(21+35) (40+14) ndash 2140-3514] middot102 + 35 14

bull Γενικώς a=a1a0 b=b1b0 και ζητείται c=ab c = ab = c210n + c1

10n2

+ c0100 όπου c2=a1b1 c0=a0b0 c1=(a1+a0)(b1+b0)-(c2+c0)

bull Αναδρομική εξίσωση M(n) = 3M(n2) M(1) = 1

bull Αποδοτικότητα M(n) = 3log 2n = nlog 23 asymp n1585

20

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Πολλαπλασιασμός πινάκων αλά Strassen

bull Ο Strassen παρατήρησε [1969] ότι το γινόμενο δύο πινάκων A και B (μεγέθους2nx2n) μπορεί να υπολογισθεί ως εξής

C00 1198620111986210 11986211

=A00 1198600111986010 11986011

lowastB00 1198610111986110 11986111

1198721+1198724minus1198725+1198727 1198723+1198725

1198722+1198724 1198721+1198723minus1198722+1198726

21

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Υποπίνακες του Strassen

bull M1 = (A00 + A11) (B00 + B11)

bull M2 = (A10 + A11) B00

bull M3 = A00 (B01 - B11)

bull M4 = A11 (B10 - B00)

bull M5 = (A00 + A01) B11

bull M6 = (A10 - A00) (B00 + B01)

bull M7 = (A01 - A11) (B10 + B11)

22

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αποδοτικότητα του αλγορίθμου Strassen

bull Αν το n δεν είναι δύναμη του 2 τότε οι πίνακες παραγεμίζονται με μηδενικά

bull Πλήθος πολλαπλασιασμών

bull Πλήθος προσθέσεων

bull Αναδρομή

bull Άλλοι αλγόριθμοι έχουν βελτιώσει αυτό το αποτέλεσμα αλλά είναι ακόμη περισσότεροι σύνθετοι

23

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Το πρόβλημα του πλησιέστερου ζεύγους

bull Πρόβλημα βρες τα πλησιέστερα σημεία μεταξύ n σημείων σε ένα k-διάστατο χώρο

bull Υποθέτουμε ότι τα σημεία ταξινομούνται με βάση τις τιμές των τετμημένων x

bull Διαιρούμε τα σημεία σε δύο υποσύνολα S1 και S2 με n2 σημεία με βάση μία κατακόρυφη γραμμή στο x=c

bull Επιλέγουμε το πλησιέστερο ζεύγος μεταξύ των ζευγών του αριστερού υποσυνόλου (απόσταση d1) μεταξύ των ζευγών του δεξιού υποσυνόλου (απόσταση d2) και το πλησιέστερο ζεύγος με σημεία και από τις δύο πλευρές

bull Πρέπει να εξετάσουμε μία λωρίδα πλάτους 2d όπουd=min[d1d2]

24

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Το πρόβλημα του πλησιέστερου ζεύγους (2)

bull Γεωμετρική εξήγηση

bull Αναδρομή T(n) = 2T(n2) + M(n)

bull Αποδοτικότητα O(n logn)

bull Βελτιστότητα

25

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αλγόριθμος QuickHull

Υπολογίζει το Κυρτό Περίβλημα με έμπνευση από τη Γρήγορη Ταξινόμηση

bull Υποθέτουμε ότι τα σημεία είναι ταξινομημένα ως προς την συντεταγμένη x

bull Προσδιορίζουμε δύο ακραία σημαία P1 και P2 (μέρη του περιβλήματος)

bull Το σύνολο σημείων S διαιρείται σε δύο υποσύνολα S1 και S2

bull Υπολογίζουμε το κυρτό περίβλημα για το S1

bull Ομοίως υπολογίζουμε το κυρτό περίβλημα για το S1

26

P1

P2

Pmax

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αλγόριθμος QuickHull (2)

bull Υπολογισμός του κυρτού (επάνω) περιβλήματος για το S1

ndashΒρίσκουμε το πιο απομακρυσμένο σημείο Pmax από τη γραμμή P1P2

ndash Υπολογίζουμε το περίβλημα για τα σημεία αριστερά της γραμμής P1Pmax

ndash Υπολογίζουμε το περίβλημα για τα σημεία αριστερά της γραμμής PmaxP2

bull Εύρεση του σημείου Pmax

ndash Το Pmax μεγιστοποιεί την επιφάνεια του τριγώνου PmaxP1P2

ndash Σε περίπτωση ισοπαλίας επιλέγεται το Pmax που μεγιστοποιεί τη γωνία PmaxP1P2

bull Τα σημεία μέσα στο τρίγωνο PmaxP1P2 αγνοούνται εφεξής

bull Πως θα βρεθεί γεωμετρικά το σημείο Pmax και τα σημεία στα αριστερά της γραμμής P1Pmax

27

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αλγόριθμος QuickHull (3)

28

bull Πως θα βρεθεί γεωμετρικά το σημείο Pmax και τα σημεία στα αριστερά της γραμμής P1Pmax

ndash Δίνονται τα σημεία P1(x1y1) P2(x2y2) Pmax(xmaxymax)

ndash Το εμβαδόν του τριγώνου είναι μισό του μεγέθους της ορίζουσας

1199091 1199101 11199092 1199102 1119909119898119886119909 119910119898119886119909 1

= x1y2+xmaxy1+x2ymaxndashxmaxy2ndashx2y1-x1ymax

ndash Το πρόσημο της έκφρασης είναι θετικό αν και μόνο αν το σημείο Pmax

είναι στα αριστερά της γραμμής P1P2

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αποδοτικότητα Αλγορίθμου QuickHull (4)

bull Η εύρεση του πλέον απομακρυσμένου σημείου από την ευθεία P1P2 μπορεί να βρεθεί σε γραμμικό χρόνο

bull Έτσι προκύπτει η ίδια πολυπλοκότητα με τη γρήγορη ταξινόμησηndash Χειρότερη περίπτωση Θ(n2)

ndash Μέση περίπτωση Θ(n log n)

bull Αν τα σημεία δεν είναι αρχικά ταξινομημένα στον άξονα x αυτό επιτυγχάνεται με κόστος Θ(n log n)

bull Άλλοι αλγόριθμοι για το κυρτό περίβλημαndash Σάρωση του Graham DCHull

Επίσης σε Θ(n log n)

29

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Δυαδική Αναζήτηση

Πολύ αποδοτικός αλγόριθμος για αναζήτηση σε ταξινομημένο πίνακα

K

vs

A[0] A[m] A[n-1]

Αν K = A[m] σταμάτησε (επιτυχημένη αναζήτηση Διαφορετικά συνέχισε την αναζήτηση με όμοιο τρόπο στον πίνακα A[0m-1] αν K lt A[m] ή στον A[m+1n-1] αν K gt A[m]

l 0 r n-1

while l r do

m (l+r)2

if K = A[m] return m

else if K lt A[m] r m-1

else l m+1

return -1

30

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Ανάλυση Δυαδικής Αναζήτησης

bull Χρονική αποδοτικότηταndash Χειρότερη περίπτωση Cw (n) = 1 + Cw( n2 ) Cw (1) = 1

ndash Λύση Cw(n) = log2(n+1)

Αυτό είναι πολύ γρήγορο πχ Cw(106) = 20

bull Βέλτιστη μέθοδος για αναζήτηση σε ταξινομημένο πίνακα

bull Περιορισμοί η είσοδος πρέπει να είναι ταξινομημένη και στη μορφή πίνακα όχι πχ συνδεδεμένη λίστα

bull ΟΧΙ καλό παράδειγμα τεχνικής laquoδιαίρει και βασίλευεraquo

bull Υπάρχει ανάλογη τεχνική για τη συνεχή περίπτωση

31

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

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

Τα δυαδικά δένδρα έχουν έτοιμη τη δομή για αλγορίθμους διαίρει και βασίλευε

Πχ κλασικές διασχίσεις (προμεταενδο-διατεταγμένη)

Algorithm Inorder(T)

if T

Inorder(Tleft)

print(root of T)

Inorder(Tright)

ΑποδοτικότηταΘ(n)

32

a

b c

d e

a

b c

d e

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αλγόριθμοι Δυαδικών Δένδρων (2)

33

Άλλο παράδειγμα υπολογισμός ύψους

bull h(T) = maxh(TL) h(TR) + 1 if T and h() = -1

bull Αποδοτικότητα Θ(n)

TL TR

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Σημείωμα Αναφοράς

Copyright Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Ιωάννης Μανωλόπουλος Αναστάσιος Γούναρης laquoΑλγόριθμοι raquo Έκδοση 10 Θεσσαλονίκη 2015 Διαθέσιμο από τη δικτυακή διεύθυνσηhttpeclassauthgrcoursesOCRS417

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons Αναφορά -Μη Εμπορική Χρήση - Παρόμοια Διανομή 40 [1] ή μεταγενέστερη Διεθνής Έκδοση Εξαιρούνται τα αυτοτελή έργα τρίτων πχ φωτογραφίες διαγράμματα κλπ τα οποία εμπεριέχονται σε αυτό και τα οποία αναφέρονται μαζί με τους όρους χρήσης τους στο laquoΣημείωμα Χρήσης Έργων Τρίτωνraquo

Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο

για εμπορική χρήση εφόσον αυτό του ζητηθεί

Ως Μη Εμπορική ορίζεται η χρήση

bull που δεν περιλαμβάνει άμεσο ή έμμεσο οικονομικό όφελος από την χρήση του έργου για το διανομέα του έργου και αδειοδόχο

bull που δεν περιλαμβάνει οικονομική συναλλαγή ως προϋπόθεση για τη χρήση ή πρόσβαση στο έργο

bull που δεν προσπορίζει στο διανομέα του έργου και αδειοδόχο έμμεσο οικονομικό όφελος (πχ διαφημίσεις) από την προβολή του έργου σε διαδικτυακό τόπο

[1] httpcreativecommonsorglicensesby-nc-sa40

Σημείωμα Αδειοδότησης

ΑΡΙΣΤΟΤΕΛΕΙΟ

ΠΑΝΕΠΙΣΤΗΜΙΟ

ΘΕΣΣΑΛΟΝΙΚΗΣ

ΑΝΟΙΚΤΑ

ΑΚΑΔΗΜΑΪΚΑ

ΜΑΘΗΜΑΤΑ

Τέλος ενότητας

Επεξεργασία Ανδρέας ΚοσματόπουλοςΘεσσαλονίκη Αύγουστος 2015

ΑΡΙΣΤΟΤΕΛΕΙΟ

ΠΑΝΕΠΙΣΤΗΜΙΟ

ΘΕΣΣΑΛΟΝΙΚΗΣ

Σημειώματα

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Σημείωμα Ιστορικού Εκδόσεων Έργου

Το παρόν έργο αποτελεί την έκδοση 100

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Διατήρηση Σημειωμάτων

Οποιαδήποτε αναπαραγωγή ή διασκευή του υλικού θα πρέπει να συμπεριλαμβάνει

το Σημείωμα Αναφοράς

το Σημείωμα Αδειοδότησης

τη δήλωση Διατήρησης Σημειωμάτων

το Σημείωμα Χρήσης Έργων Τρίτων (εφόσον υπάρχει)

μαζί με τους συνοδευόμενους υπερσυνδέσμους

Page 3: ΑΛΟΡΙΘΜΟΙ · 2015. 9. 9. · Αλγόριθμος QuickHull (2) •πολογισμός του κυρτού (επάνω)περιβλήματος για το S 1 –ρίσκουμε

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Χρηματοδότηση

bull Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα

bull Το έργο laquoΑνοικτά Ακαδημαϊκά Μαθήματα στο Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκηςraquo έχει χρηματοδοτήσει μόνο τη αναδιαμόρφωση του εκπαιδευτικού υλικού

bull Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος laquoΕκπαίδευση και Δια Βίου Μάθησηraquo και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους

3

ΑΡΙΣΤΟΤΕΛΕΙΟ

ΠΑΝΕΠΙΣΤΗΜΙΟ

ΘΕΣΣΑΛΟΝΙΚΗΣ

ΑΝΟΙΚΤΑ

ΑΚΑΔΗΜΑΪΚΑ

ΜΑΘΗΜΑΤΑ

Διαίρει και Βασίλευε

Ταξινόμηση με Συγχώνευση Γρήγορη Ταξινόμηση Πολλαπλασιασμός κατά

Strassen Quickhull Διάσχιση Δένδρων

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Διαίρει και Βασίλευε

Η γνωστότερη μέθοδος σχεδιασμού αλγορίθμων

1 Διαιρούμε το στιγμιότυπο του προβλήματος σε δύο ή περισσότερα μικρότερα στιγμιότυπα

2 Επιλύουμε τα μικρότερα στιγμιότυπα αναδρομικά

3 Βρίσκουμε τη λύση στο αρχικό (μεγαλύτερο) στιγμιότυπο συνδυάζοντας αυτές τις λύσεις

5

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

υποπρόβλημα 2 μεγέθους n2

υποπρόβλημα 1 μεγέθους n2

μία λύση για το υποπρόβλημα 1

Η λύση για το αρχικό πρόβλημα

μία λύση για το υποπρόβλημα 2

Πρόβλημαμεγέθους n

Διαίρει και Βασίλευε

6

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Παραδείγματα Διαίρει και Βασίλευε

bull Ταξινόμηση με συγχώνευση και γρήγορη ταξινόμηση

bull Διασχίσεις δένδρων

bull Δυαδική αναζήτηση ()

bull Πολλαπλασιασμός πινάκων ndash Αλγόριθμος του Strassen

bull Κυρτό περίβλημα - Αλγόριθμος QuickHull

7

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Γενική αναδρομή του Διαίρει και Βασίλευε

T(n) = aT(nb) + f (n) όπου f (n) isin Θ(nk) kge0

1 a lt bk T(n) isin Θ(nk)

2 a = bk T(n) isin Θ(nk lg n )

3 a gt bk T(n) isin Θ(nlog b a)

Σημείωση το ίδιο αποτέλεσμα ισχύει για το συμβολισμό O αντί για το Θ

8

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Ταξινόμηση με συγχώνευση (1)

Αλγόριθμος

bull Διαιρούμε τον πίνακα A[1n] σε δύο τμήματα και αντιγράφουμε το καθένα στους πίνακες B[1 n2 ] και C[1 n2 ]

bull Ταξινομούμε τους πίνακες B και C

bull Συγχωνεύουμε τους πίνακες B και C στον πίνακα A ως εξήςndash Επαναλαμβάνουμε μέχρι να μη μείνει κάποιο στοιχείο σε έναν από

τους πίνακες

bull Συγκρίνουμε τα πρώτα στοιχεία στα εναπομένοντα μη επεξεργασμένα τμήματα των πινάκων

bull Αντιγράφουμε το μικρότερο από τα δύο στοιχεία στον πίνακα A ενώ αυξάνουνε το δείκτη προς το μη επεξεργασμένο τμήμα του

ndash Όταν επεξεργασθούμε όλα τα στοιχεία του ενός πίνακα τότε αντιγράφουμε στον πίνακα Α τα υπόλοιπα μη επεξεργασθέντα στοιχεία από τον άλλο πίνακα

9

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Ταξινόμηση με συγχώνευση (2)

10

Algorithm Mergesort(A[0n-1]) Sorts array A[0n-1] by recursive mergesort

Input An array A[0n-1] of orderable elements

Output Array A[0n-1] sorted in nondecreasing

order

if ngt1

copy A[0n2-1] to B[0n2-1]

copy A[n2n-1] to C[0n2-1]

Mergesort(B[0n2-1])

Mergesort(C[0n2-1])

Merge(B C A)

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Ταξινόμηση με συγχώνευση (3)

11

Algorithm Merge(B[0p-1] C[0q-1] A[0p+q-1])

Merges two sorted arrays into one sorted array

Input Arrays B[0p-1] and C[0q-1] both sorted

Output Sorted array A[0p+q-1] of the elements of B and C

i 0 j 0 k 0

while i lt p and j lt q do

if B[i] le C[j] A[k] B[i] i++

else A[k] C[j] j++

k++

if i = p copy C[jq-1] to A[kp+q-1]

else copy B[ip-1] to A[kp+q-1]

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Ταξινόμηση με συγχώνευση (4)

12

4 2 8 1 3 9 5 6

4 2 8 1 3 9 5 6

4 2 8 1 3 9 5 6

4 2 8 1 3 9 5 6

2 4 1 8 3 9 5 6

1 2 4 8 3 5 6 9

1 2 3 4 5 6 8 9

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αποδοτικότητα της ταξινόμησης με συγχώνευση

bull C(n) = 2 C(n2) + Cmerge(n) for ngt1 C(1)=0

bull Όλες οι περιπτώσεις έχουν την ίδια αποδοτικότητα Θ(n log n)

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

ndash log n asymp n lg n - 144 n

bull Απαιτήσεις χώρου Θ(n) (δεν είναι in-place)

bull Μπορεί να υλοποιηθεί χωρίς αναδρομή (bottom-up)

13

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Γρήγορη Ταξινόμηση (1)

bull Επιλέγουμε ένα αξονικό στοιχείο ως άξονα (το στοιχείο της διαμέρισης)

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

bull Ανταλλάσουμε τον άξονα με το τελευταίο στοιχείο της πρώτης λίστας (δηλαδή τη λίστα le ) οπότε ο άξονας λαμβάνει την τελική του θέση

bull Ταξινομούμε τις δύο λίστες

14

p

A[i]lep A[i]gtp

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Γρήγορη Ταξινόμηση (2)

Algorithm Quicksort(A[lr]) Input an array A[0n-1] of orderable

elements

Output Array A[0n-1] sorted ascendingly

if lltr

s partition(A[lr])

quicksort(A[ls-1])

quicksort(A[s+1r])

15

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Γρήγορη Ταξινόμηση (3)

Algorithm Partition(A[lr]) Partitions a subarray by using its first

element as pivot Input a subarray A[lr] lltr Output A partition of A[lr] with the

split position returned as this functionrsquos value

pA[l] il jr+1repeat

repeat ii+1 until A[i]geprepeat jj-1 until A[j]lepswap(A[i]A[j])

until igejswap(A[i]A[j]) εξουδετέρωση αλλαγής όταν

igejswap(A[l]A[j])return j

16

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Γρήγορη Ταξινόμηση (4)

Παράδειγμα

5 3 1 9 8 2 4 7

Ποιά είναι η σειρά των κλήσεων συναρτήσεων

17

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Γρήγορη Ταξινόμηση (5)

bull Καλύτερη περίπτωση χωρισμός στη μέση mdash Θ(n log n)

bull Χειρότερη περίπτωση ταξινομημένος πίνακας mdash Θ(n2)

bull Μέση περίπτωση τυχαίος πίνακας mdash Θ(n log n)

bull Βελτιώσεις

ndash Καλύτερη επιλογή του άξονα το μεσαίο από 3 στοιχεία αποφεύγει τη χειρότερη περίπτωση σε ταξινομημένα αρχεία

ndash Γυρνούμε σε ταξινόμηση με εισαγωγή για μικρά υποαρχεία

ndash Αποφεύγουμε την αναδρομή

Μπορούν να δώσουν βελτίωση μέχρι 20-25

bull Θεωρείται η καλύτερη μέθοδος για εσωτερική ταξινόμηση μεγάλων αρχείων (n ge 10000)

18

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Πολλαπλασιασμός μεγάλων ακεραίων (1)

bull Για να πολλαπλασιάσουμε δύο ακεραίους με n1 και n2 ψηφία με το χέρι θα εκτελέσουμε n1n2 πράξεις πολλαπλασιασμού

bull Πρόβλημα όταν έχουμε πολλά ψηφία

ndash A = 12345678901357986429 B = 87654321284820912836

bull Ας δούμε ένα απλούστερο παράδειγμα 2314

- Όμως 23 = 2101+3100 14 = 1101+4100

- Άρα 2314 = (21)102 +(24+31)101 + (34) 100

bull Αν A = 2135 B = 4014

ΑΒ= (21 middot102 + 35) (40 middot102 + 14)

= 21 40 middot104 + (21 14 + 35 40) middot102 + 35 14

19

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Πολλαπλασιασμός μεγάλων ακεραίων (2)

bull Βασική παρατήρηση

α) 2314 = (21)102 +(24+31)101 + (34) 100

= (21)102 +[(2+3)(1+4)-21-34]101 + (34) 100

bull β) 2135 4014 = 21 40 middot104 + (21 14 + 35 40) middot102 + 35 14

= 21 40 middot104 + [(21+35) (40+14) ndash 2140-3514] middot102 + 35 14

bull Γενικώς a=a1a0 b=b1b0 και ζητείται c=ab c = ab = c210n + c1

10n2

+ c0100 όπου c2=a1b1 c0=a0b0 c1=(a1+a0)(b1+b0)-(c2+c0)

bull Αναδρομική εξίσωση M(n) = 3M(n2) M(1) = 1

bull Αποδοτικότητα M(n) = 3log 2n = nlog 23 asymp n1585

20

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Πολλαπλασιασμός πινάκων αλά Strassen

bull Ο Strassen παρατήρησε [1969] ότι το γινόμενο δύο πινάκων A και B (μεγέθους2nx2n) μπορεί να υπολογισθεί ως εξής

C00 1198620111986210 11986211

=A00 1198600111986010 11986011

lowastB00 1198610111986110 11986111

1198721+1198724minus1198725+1198727 1198723+1198725

1198722+1198724 1198721+1198723minus1198722+1198726

21

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Υποπίνακες του Strassen

bull M1 = (A00 + A11) (B00 + B11)

bull M2 = (A10 + A11) B00

bull M3 = A00 (B01 - B11)

bull M4 = A11 (B10 - B00)

bull M5 = (A00 + A01) B11

bull M6 = (A10 - A00) (B00 + B01)

bull M7 = (A01 - A11) (B10 + B11)

22

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αποδοτικότητα του αλγορίθμου Strassen

bull Αν το n δεν είναι δύναμη του 2 τότε οι πίνακες παραγεμίζονται με μηδενικά

bull Πλήθος πολλαπλασιασμών

bull Πλήθος προσθέσεων

bull Αναδρομή

bull Άλλοι αλγόριθμοι έχουν βελτιώσει αυτό το αποτέλεσμα αλλά είναι ακόμη περισσότεροι σύνθετοι

23

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Το πρόβλημα του πλησιέστερου ζεύγους

bull Πρόβλημα βρες τα πλησιέστερα σημεία μεταξύ n σημείων σε ένα k-διάστατο χώρο

bull Υποθέτουμε ότι τα σημεία ταξινομούνται με βάση τις τιμές των τετμημένων x

bull Διαιρούμε τα σημεία σε δύο υποσύνολα S1 και S2 με n2 σημεία με βάση μία κατακόρυφη γραμμή στο x=c

bull Επιλέγουμε το πλησιέστερο ζεύγος μεταξύ των ζευγών του αριστερού υποσυνόλου (απόσταση d1) μεταξύ των ζευγών του δεξιού υποσυνόλου (απόσταση d2) και το πλησιέστερο ζεύγος με σημεία και από τις δύο πλευρές

bull Πρέπει να εξετάσουμε μία λωρίδα πλάτους 2d όπουd=min[d1d2]

24

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Το πρόβλημα του πλησιέστερου ζεύγους (2)

bull Γεωμετρική εξήγηση

bull Αναδρομή T(n) = 2T(n2) + M(n)

bull Αποδοτικότητα O(n logn)

bull Βελτιστότητα

25

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αλγόριθμος QuickHull

Υπολογίζει το Κυρτό Περίβλημα με έμπνευση από τη Γρήγορη Ταξινόμηση

bull Υποθέτουμε ότι τα σημεία είναι ταξινομημένα ως προς την συντεταγμένη x

bull Προσδιορίζουμε δύο ακραία σημαία P1 και P2 (μέρη του περιβλήματος)

bull Το σύνολο σημείων S διαιρείται σε δύο υποσύνολα S1 και S2

bull Υπολογίζουμε το κυρτό περίβλημα για το S1

bull Ομοίως υπολογίζουμε το κυρτό περίβλημα για το S1

26

P1

P2

Pmax

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αλγόριθμος QuickHull (2)

bull Υπολογισμός του κυρτού (επάνω) περιβλήματος για το S1

ndashΒρίσκουμε το πιο απομακρυσμένο σημείο Pmax από τη γραμμή P1P2

ndash Υπολογίζουμε το περίβλημα για τα σημεία αριστερά της γραμμής P1Pmax

ndash Υπολογίζουμε το περίβλημα για τα σημεία αριστερά της γραμμής PmaxP2

bull Εύρεση του σημείου Pmax

ndash Το Pmax μεγιστοποιεί την επιφάνεια του τριγώνου PmaxP1P2

ndash Σε περίπτωση ισοπαλίας επιλέγεται το Pmax που μεγιστοποιεί τη γωνία PmaxP1P2

bull Τα σημεία μέσα στο τρίγωνο PmaxP1P2 αγνοούνται εφεξής

bull Πως θα βρεθεί γεωμετρικά το σημείο Pmax και τα σημεία στα αριστερά της γραμμής P1Pmax

27

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αλγόριθμος QuickHull (3)

28

bull Πως θα βρεθεί γεωμετρικά το σημείο Pmax και τα σημεία στα αριστερά της γραμμής P1Pmax

ndash Δίνονται τα σημεία P1(x1y1) P2(x2y2) Pmax(xmaxymax)

ndash Το εμβαδόν του τριγώνου είναι μισό του μεγέθους της ορίζουσας

1199091 1199101 11199092 1199102 1119909119898119886119909 119910119898119886119909 1

= x1y2+xmaxy1+x2ymaxndashxmaxy2ndashx2y1-x1ymax

ndash Το πρόσημο της έκφρασης είναι θετικό αν και μόνο αν το σημείο Pmax

είναι στα αριστερά της γραμμής P1P2

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αποδοτικότητα Αλγορίθμου QuickHull (4)

bull Η εύρεση του πλέον απομακρυσμένου σημείου από την ευθεία P1P2 μπορεί να βρεθεί σε γραμμικό χρόνο

bull Έτσι προκύπτει η ίδια πολυπλοκότητα με τη γρήγορη ταξινόμησηndash Χειρότερη περίπτωση Θ(n2)

ndash Μέση περίπτωση Θ(n log n)

bull Αν τα σημεία δεν είναι αρχικά ταξινομημένα στον άξονα x αυτό επιτυγχάνεται με κόστος Θ(n log n)

bull Άλλοι αλγόριθμοι για το κυρτό περίβλημαndash Σάρωση του Graham DCHull

Επίσης σε Θ(n log n)

29

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Δυαδική Αναζήτηση

Πολύ αποδοτικός αλγόριθμος για αναζήτηση σε ταξινομημένο πίνακα

K

vs

A[0] A[m] A[n-1]

Αν K = A[m] σταμάτησε (επιτυχημένη αναζήτηση Διαφορετικά συνέχισε την αναζήτηση με όμοιο τρόπο στον πίνακα A[0m-1] αν K lt A[m] ή στον A[m+1n-1] αν K gt A[m]

l 0 r n-1

while l r do

m (l+r)2

if K = A[m] return m

else if K lt A[m] r m-1

else l m+1

return -1

30

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Ανάλυση Δυαδικής Αναζήτησης

bull Χρονική αποδοτικότηταndash Χειρότερη περίπτωση Cw (n) = 1 + Cw( n2 ) Cw (1) = 1

ndash Λύση Cw(n) = log2(n+1)

Αυτό είναι πολύ γρήγορο πχ Cw(106) = 20

bull Βέλτιστη μέθοδος για αναζήτηση σε ταξινομημένο πίνακα

bull Περιορισμοί η είσοδος πρέπει να είναι ταξινομημένη και στη μορφή πίνακα όχι πχ συνδεδεμένη λίστα

bull ΟΧΙ καλό παράδειγμα τεχνικής laquoδιαίρει και βασίλευεraquo

bull Υπάρχει ανάλογη τεχνική για τη συνεχή περίπτωση

31

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

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

Τα δυαδικά δένδρα έχουν έτοιμη τη δομή για αλγορίθμους διαίρει και βασίλευε

Πχ κλασικές διασχίσεις (προμεταενδο-διατεταγμένη)

Algorithm Inorder(T)

if T

Inorder(Tleft)

print(root of T)

Inorder(Tright)

ΑποδοτικότηταΘ(n)

32

a

b c

d e

a

b c

d e

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αλγόριθμοι Δυαδικών Δένδρων (2)

33

Άλλο παράδειγμα υπολογισμός ύψους

bull h(T) = maxh(TL) h(TR) + 1 if T and h() = -1

bull Αποδοτικότητα Θ(n)

TL TR

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Σημείωμα Αναφοράς

Copyright Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Ιωάννης Μανωλόπουλος Αναστάσιος Γούναρης laquoΑλγόριθμοι raquo Έκδοση 10 Θεσσαλονίκη 2015 Διαθέσιμο από τη δικτυακή διεύθυνσηhttpeclassauthgrcoursesOCRS417

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons Αναφορά -Μη Εμπορική Χρήση - Παρόμοια Διανομή 40 [1] ή μεταγενέστερη Διεθνής Έκδοση Εξαιρούνται τα αυτοτελή έργα τρίτων πχ φωτογραφίες διαγράμματα κλπ τα οποία εμπεριέχονται σε αυτό και τα οποία αναφέρονται μαζί με τους όρους χρήσης τους στο laquoΣημείωμα Χρήσης Έργων Τρίτωνraquo

Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο

για εμπορική χρήση εφόσον αυτό του ζητηθεί

Ως Μη Εμπορική ορίζεται η χρήση

bull που δεν περιλαμβάνει άμεσο ή έμμεσο οικονομικό όφελος από την χρήση του έργου για το διανομέα του έργου και αδειοδόχο

bull που δεν περιλαμβάνει οικονομική συναλλαγή ως προϋπόθεση για τη χρήση ή πρόσβαση στο έργο

bull που δεν προσπορίζει στο διανομέα του έργου και αδειοδόχο έμμεσο οικονομικό όφελος (πχ διαφημίσεις) από την προβολή του έργου σε διαδικτυακό τόπο

[1] httpcreativecommonsorglicensesby-nc-sa40

Σημείωμα Αδειοδότησης

ΑΡΙΣΤΟΤΕΛΕΙΟ

ΠΑΝΕΠΙΣΤΗΜΙΟ

ΘΕΣΣΑΛΟΝΙΚΗΣ

ΑΝΟΙΚΤΑ

ΑΚΑΔΗΜΑΪΚΑ

ΜΑΘΗΜΑΤΑ

Τέλος ενότητας

Επεξεργασία Ανδρέας ΚοσματόπουλοςΘεσσαλονίκη Αύγουστος 2015

ΑΡΙΣΤΟΤΕΛΕΙΟ

ΠΑΝΕΠΙΣΤΗΜΙΟ

ΘΕΣΣΑΛΟΝΙΚΗΣ

Σημειώματα

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Σημείωμα Ιστορικού Εκδόσεων Έργου

Το παρόν έργο αποτελεί την έκδοση 100

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Διατήρηση Σημειωμάτων

Οποιαδήποτε αναπαραγωγή ή διασκευή του υλικού θα πρέπει να συμπεριλαμβάνει

το Σημείωμα Αναφοράς

το Σημείωμα Αδειοδότησης

τη δήλωση Διατήρησης Σημειωμάτων

το Σημείωμα Χρήσης Έργων Τρίτων (εφόσον υπάρχει)

μαζί με τους συνοδευόμενους υπερσυνδέσμους

Page 4: ΑΛΟΡΙΘΜΟΙ · 2015. 9. 9. · Αλγόριθμος QuickHull (2) •πολογισμός του κυρτού (επάνω)περιβλήματος για το S 1 –ρίσκουμε

ΑΡΙΣΤΟΤΕΛΕΙΟ

ΠΑΝΕΠΙΣΤΗΜΙΟ

ΘΕΣΣΑΛΟΝΙΚΗΣ

ΑΝΟΙΚΤΑ

ΑΚΑΔΗΜΑΪΚΑ

ΜΑΘΗΜΑΤΑ

Διαίρει και Βασίλευε

Ταξινόμηση με Συγχώνευση Γρήγορη Ταξινόμηση Πολλαπλασιασμός κατά

Strassen Quickhull Διάσχιση Δένδρων

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Διαίρει και Βασίλευε

Η γνωστότερη μέθοδος σχεδιασμού αλγορίθμων

1 Διαιρούμε το στιγμιότυπο του προβλήματος σε δύο ή περισσότερα μικρότερα στιγμιότυπα

2 Επιλύουμε τα μικρότερα στιγμιότυπα αναδρομικά

3 Βρίσκουμε τη λύση στο αρχικό (μεγαλύτερο) στιγμιότυπο συνδυάζοντας αυτές τις λύσεις

5

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

υποπρόβλημα 2 μεγέθους n2

υποπρόβλημα 1 μεγέθους n2

μία λύση για το υποπρόβλημα 1

Η λύση για το αρχικό πρόβλημα

μία λύση για το υποπρόβλημα 2

Πρόβλημαμεγέθους n

Διαίρει και Βασίλευε

6

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Παραδείγματα Διαίρει και Βασίλευε

bull Ταξινόμηση με συγχώνευση και γρήγορη ταξινόμηση

bull Διασχίσεις δένδρων

bull Δυαδική αναζήτηση ()

bull Πολλαπλασιασμός πινάκων ndash Αλγόριθμος του Strassen

bull Κυρτό περίβλημα - Αλγόριθμος QuickHull

7

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Γενική αναδρομή του Διαίρει και Βασίλευε

T(n) = aT(nb) + f (n) όπου f (n) isin Θ(nk) kge0

1 a lt bk T(n) isin Θ(nk)

2 a = bk T(n) isin Θ(nk lg n )

3 a gt bk T(n) isin Θ(nlog b a)

Σημείωση το ίδιο αποτέλεσμα ισχύει για το συμβολισμό O αντί για το Θ

8

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Ταξινόμηση με συγχώνευση (1)

Αλγόριθμος

bull Διαιρούμε τον πίνακα A[1n] σε δύο τμήματα και αντιγράφουμε το καθένα στους πίνακες B[1 n2 ] και C[1 n2 ]

bull Ταξινομούμε τους πίνακες B και C

bull Συγχωνεύουμε τους πίνακες B και C στον πίνακα A ως εξήςndash Επαναλαμβάνουμε μέχρι να μη μείνει κάποιο στοιχείο σε έναν από

τους πίνακες

bull Συγκρίνουμε τα πρώτα στοιχεία στα εναπομένοντα μη επεξεργασμένα τμήματα των πινάκων

bull Αντιγράφουμε το μικρότερο από τα δύο στοιχεία στον πίνακα A ενώ αυξάνουνε το δείκτη προς το μη επεξεργασμένο τμήμα του

ndash Όταν επεξεργασθούμε όλα τα στοιχεία του ενός πίνακα τότε αντιγράφουμε στον πίνακα Α τα υπόλοιπα μη επεξεργασθέντα στοιχεία από τον άλλο πίνακα

9

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Ταξινόμηση με συγχώνευση (2)

10

Algorithm Mergesort(A[0n-1]) Sorts array A[0n-1] by recursive mergesort

Input An array A[0n-1] of orderable elements

Output Array A[0n-1] sorted in nondecreasing

order

if ngt1

copy A[0n2-1] to B[0n2-1]

copy A[n2n-1] to C[0n2-1]

Mergesort(B[0n2-1])

Mergesort(C[0n2-1])

Merge(B C A)

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Ταξινόμηση με συγχώνευση (3)

11

Algorithm Merge(B[0p-1] C[0q-1] A[0p+q-1])

Merges two sorted arrays into one sorted array

Input Arrays B[0p-1] and C[0q-1] both sorted

Output Sorted array A[0p+q-1] of the elements of B and C

i 0 j 0 k 0

while i lt p and j lt q do

if B[i] le C[j] A[k] B[i] i++

else A[k] C[j] j++

k++

if i = p copy C[jq-1] to A[kp+q-1]

else copy B[ip-1] to A[kp+q-1]

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Ταξινόμηση με συγχώνευση (4)

12

4 2 8 1 3 9 5 6

4 2 8 1 3 9 5 6

4 2 8 1 3 9 5 6

4 2 8 1 3 9 5 6

2 4 1 8 3 9 5 6

1 2 4 8 3 5 6 9

1 2 3 4 5 6 8 9

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αποδοτικότητα της ταξινόμησης με συγχώνευση

bull C(n) = 2 C(n2) + Cmerge(n) for ngt1 C(1)=0

bull Όλες οι περιπτώσεις έχουν την ίδια αποδοτικότητα Θ(n log n)

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

ndash log n asymp n lg n - 144 n

bull Απαιτήσεις χώρου Θ(n) (δεν είναι in-place)

bull Μπορεί να υλοποιηθεί χωρίς αναδρομή (bottom-up)

13

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Γρήγορη Ταξινόμηση (1)

bull Επιλέγουμε ένα αξονικό στοιχείο ως άξονα (το στοιχείο της διαμέρισης)

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

bull Ανταλλάσουμε τον άξονα με το τελευταίο στοιχείο της πρώτης λίστας (δηλαδή τη λίστα le ) οπότε ο άξονας λαμβάνει την τελική του θέση

bull Ταξινομούμε τις δύο λίστες

14

p

A[i]lep A[i]gtp

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Γρήγορη Ταξινόμηση (2)

Algorithm Quicksort(A[lr]) Input an array A[0n-1] of orderable

elements

Output Array A[0n-1] sorted ascendingly

if lltr

s partition(A[lr])

quicksort(A[ls-1])

quicksort(A[s+1r])

15

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Γρήγορη Ταξινόμηση (3)

Algorithm Partition(A[lr]) Partitions a subarray by using its first

element as pivot Input a subarray A[lr] lltr Output A partition of A[lr] with the

split position returned as this functionrsquos value

pA[l] il jr+1repeat

repeat ii+1 until A[i]geprepeat jj-1 until A[j]lepswap(A[i]A[j])

until igejswap(A[i]A[j]) εξουδετέρωση αλλαγής όταν

igejswap(A[l]A[j])return j

16

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Γρήγορη Ταξινόμηση (4)

Παράδειγμα

5 3 1 9 8 2 4 7

Ποιά είναι η σειρά των κλήσεων συναρτήσεων

17

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Γρήγορη Ταξινόμηση (5)

bull Καλύτερη περίπτωση χωρισμός στη μέση mdash Θ(n log n)

bull Χειρότερη περίπτωση ταξινομημένος πίνακας mdash Θ(n2)

bull Μέση περίπτωση τυχαίος πίνακας mdash Θ(n log n)

bull Βελτιώσεις

ndash Καλύτερη επιλογή του άξονα το μεσαίο από 3 στοιχεία αποφεύγει τη χειρότερη περίπτωση σε ταξινομημένα αρχεία

ndash Γυρνούμε σε ταξινόμηση με εισαγωγή για μικρά υποαρχεία

ndash Αποφεύγουμε την αναδρομή

Μπορούν να δώσουν βελτίωση μέχρι 20-25

bull Θεωρείται η καλύτερη μέθοδος για εσωτερική ταξινόμηση μεγάλων αρχείων (n ge 10000)

18

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Πολλαπλασιασμός μεγάλων ακεραίων (1)

bull Για να πολλαπλασιάσουμε δύο ακεραίους με n1 και n2 ψηφία με το χέρι θα εκτελέσουμε n1n2 πράξεις πολλαπλασιασμού

bull Πρόβλημα όταν έχουμε πολλά ψηφία

ndash A = 12345678901357986429 B = 87654321284820912836

bull Ας δούμε ένα απλούστερο παράδειγμα 2314

- Όμως 23 = 2101+3100 14 = 1101+4100

- Άρα 2314 = (21)102 +(24+31)101 + (34) 100

bull Αν A = 2135 B = 4014

ΑΒ= (21 middot102 + 35) (40 middot102 + 14)

= 21 40 middot104 + (21 14 + 35 40) middot102 + 35 14

19

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Πολλαπλασιασμός μεγάλων ακεραίων (2)

bull Βασική παρατήρηση

α) 2314 = (21)102 +(24+31)101 + (34) 100

= (21)102 +[(2+3)(1+4)-21-34]101 + (34) 100

bull β) 2135 4014 = 21 40 middot104 + (21 14 + 35 40) middot102 + 35 14

= 21 40 middot104 + [(21+35) (40+14) ndash 2140-3514] middot102 + 35 14

bull Γενικώς a=a1a0 b=b1b0 και ζητείται c=ab c = ab = c210n + c1

10n2

+ c0100 όπου c2=a1b1 c0=a0b0 c1=(a1+a0)(b1+b0)-(c2+c0)

bull Αναδρομική εξίσωση M(n) = 3M(n2) M(1) = 1

bull Αποδοτικότητα M(n) = 3log 2n = nlog 23 asymp n1585

20

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Πολλαπλασιασμός πινάκων αλά Strassen

bull Ο Strassen παρατήρησε [1969] ότι το γινόμενο δύο πινάκων A και B (μεγέθους2nx2n) μπορεί να υπολογισθεί ως εξής

C00 1198620111986210 11986211

=A00 1198600111986010 11986011

lowastB00 1198610111986110 11986111

1198721+1198724minus1198725+1198727 1198723+1198725

1198722+1198724 1198721+1198723minus1198722+1198726

21

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Υποπίνακες του Strassen

bull M1 = (A00 + A11) (B00 + B11)

bull M2 = (A10 + A11) B00

bull M3 = A00 (B01 - B11)

bull M4 = A11 (B10 - B00)

bull M5 = (A00 + A01) B11

bull M6 = (A10 - A00) (B00 + B01)

bull M7 = (A01 - A11) (B10 + B11)

22

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αποδοτικότητα του αλγορίθμου Strassen

bull Αν το n δεν είναι δύναμη του 2 τότε οι πίνακες παραγεμίζονται με μηδενικά

bull Πλήθος πολλαπλασιασμών

bull Πλήθος προσθέσεων

bull Αναδρομή

bull Άλλοι αλγόριθμοι έχουν βελτιώσει αυτό το αποτέλεσμα αλλά είναι ακόμη περισσότεροι σύνθετοι

23

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Το πρόβλημα του πλησιέστερου ζεύγους

bull Πρόβλημα βρες τα πλησιέστερα σημεία μεταξύ n σημείων σε ένα k-διάστατο χώρο

bull Υποθέτουμε ότι τα σημεία ταξινομούνται με βάση τις τιμές των τετμημένων x

bull Διαιρούμε τα σημεία σε δύο υποσύνολα S1 και S2 με n2 σημεία με βάση μία κατακόρυφη γραμμή στο x=c

bull Επιλέγουμε το πλησιέστερο ζεύγος μεταξύ των ζευγών του αριστερού υποσυνόλου (απόσταση d1) μεταξύ των ζευγών του δεξιού υποσυνόλου (απόσταση d2) και το πλησιέστερο ζεύγος με σημεία και από τις δύο πλευρές

bull Πρέπει να εξετάσουμε μία λωρίδα πλάτους 2d όπουd=min[d1d2]

24

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Το πρόβλημα του πλησιέστερου ζεύγους (2)

bull Γεωμετρική εξήγηση

bull Αναδρομή T(n) = 2T(n2) + M(n)

bull Αποδοτικότητα O(n logn)

bull Βελτιστότητα

25

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αλγόριθμος QuickHull

Υπολογίζει το Κυρτό Περίβλημα με έμπνευση από τη Γρήγορη Ταξινόμηση

bull Υποθέτουμε ότι τα σημεία είναι ταξινομημένα ως προς την συντεταγμένη x

bull Προσδιορίζουμε δύο ακραία σημαία P1 και P2 (μέρη του περιβλήματος)

bull Το σύνολο σημείων S διαιρείται σε δύο υποσύνολα S1 και S2

bull Υπολογίζουμε το κυρτό περίβλημα για το S1

bull Ομοίως υπολογίζουμε το κυρτό περίβλημα για το S1

26

P1

P2

Pmax

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αλγόριθμος QuickHull (2)

bull Υπολογισμός του κυρτού (επάνω) περιβλήματος για το S1

ndashΒρίσκουμε το πιο απομακρυσμένο σημείο Pmax από τη γραμμή P1P2

ndash Υπολογίζουμε το περίβλημα για τα σημεία αριστερά της γραμμής P1Pmax

ndash Υπολογίζουμε το περίβλημα για τα σημεία αριστερά της γραμμής PmaxP2

bull Εύρεση του σημείου Pmax

ndash Το Pmax μεγιστοποιεί την επιφάνεια του τριγώνου PmaxP1P2

ndash Σε περίπτωση ισοπαλίας επιλέγεται το Pmax που μεγιστοποιεί τη γωνία PmaxP1P2

bull Τα σημεία μέσα στο τρίγωνο PmaxP1P2 αγνοούνται εφεξής

bull Πως θα βρεθεί γεωμετρικά το σημείο Pmax και τα σημεία στα αριστερά της γραμμής P1Pmax

27

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αλγόριθμος QuickHull (3)

28

bull Πως θα βρεθεί γεωμετρικά το σημείο Pmax και τα σημεία στα αριστερά της γραμμής P1Pmax

ndash Δίνονται τα σημεία P1(x1y1) P2(x2y2) Pmax(xmaxymax)

ndash Το εμβαδόν του τριγώνου είναι μισό του μεγέθους της ορίζουσας

1199091 1199101 11199092 1199102 1119909119898119886119909 119910119898119886119909 1

= x1y2+xmaxy1+x2ymaxndashxmaxy2ndashx2y1-x1ymax

ndash Το πρόσημο της έκφρασης είναι θετικό αν και μόνο αν το σημείο Pmax

είναι στα αριστερά της γραμμής P1P2

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αποδοτικότητα Αλγορίθμου QuickHull (4)

bull Η εύρεση του πλέον απομακρυσμένου σημείου από την ευθεία P1P2 μπορεί να βρεθεί σε γραμμικό χρόνο

bull Έτσι προκύπτει η ίδια πολυπλοκότητα με τη γρήγορη ταξινόμησηndash Χειρότερη περίπτωση Θ(n2)

ndash Μέση περίπτωση Θ(n log n)

bull Αν τα σημεία δεν είναι αρχικά ταξινομημένα στον άξονα x αυτό επιτυγχάνεται με κόστος Θ(n log n)

bull Άλλοι αλγόριθμοι για το κυρτό περίβλημαndash Σάρωση του Graham DCHull

Επίσης σε Θ(n log n)

29

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Δυαδική Αναζήτηση

Πολύ αποδοτικός αλγόριθμος για αναζήτηση σε ταξινομημένο πίνακα

K

vs

A[0] A[m] A[n-1]

Αν K = A[m] σταμάτησε (επιτυχημένη αναζήτηση Διαφορετικά συνέχισε την αναζήτηση με όμοιο τρόπο στον πίνακα A[0m-1] αν K lt A[m] ή στον A[m+1n-1] αν K gt A[m]

l 0 r n-1

while l r do

m (l+r)2

if K = A[m] return m

else if K lt A[m] r m-1

else l m+1

return -1

30

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Ανάλυση Δυαδικής Αναζήτησης

bull Χρονική αποδοτικότηταndash Χειρότερη περίπτωση Cw (n) = 1 + Cw( n2 ) Cw (1) = 1

ndash Λύση Cw(n) = log2(n+1)

Αυτό είναι πολύ γρήγορο πχ Cw(106) = 20

bull Βέλτιστη μέθοδος για αναζήτηση σε ταξινομημένο πίνακα

bull Περιορισμοί η είσοδος πρέπει να είναι ταξινομημένη και στη μορφή πίνακα όχι πχ συνδεδεμένη λίστα

bull ΟΧΙ καλό παράδειγμα τεχνικής laquoδιαίρει και βασίλευεraquo

bull Υπάρχει ανάλογη τεχνική για τη συνεχή περίπτωση

31

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

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

Τα δυαδικά δένδρα έχουν έτοιμη τη δομή για αλγορίθμους διαίρει και βασίλευε

Πχ κλασικές διασχίσεις (προμεταενδο-διατεταγμένη)

Algorithm Inorder(T)

if T

Inorder(Tleft)

print(root of T)

Inorder(Tright)

ΑποδοτικότηταΘ(n)

32

a

b c

d e

a

b c

d e

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αλγόριθμοι Δυαδικών Δένδρων (2)

33

Άλλο παράδειγμα υπολογισμός ύψους

bull h(T) = maxh(TL) h(TR) + 1 if T and h() = -1

bull Αποδοτικότητα Θ(n)

TL TR

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Σημείωμα Αναφοράς

Copyright Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Ιωάννης Μανωλόπουλος Αναστάσιος Γούναρης laquoΑλγόριθμοι raquo Έκδοση 10 Θεσσαλονίκη 2015 Διαθέσιμο από τη δικτυακή διεύθυνσηhttpeclassauthgrcoursesOCRS417

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons Αναφορά -Μη Εμπορική Χρήση - Παρόμοια Διανομή 40 [1] ή μεταγενέστερη Διεθνής Έκδοση Εξαιρούνται τα αυτοτελή έργα τρίτων πχ φωτογραφίες διαγράμματα κλπ τα οποία εμπεριέχονται σε αυτό και τα οποία αναφέρονται μαζί με τους όρους χρήσης τους στο laquoΣημείωμα Χρήσης Έργων Τρίτωνraquo

Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο

για εμπορική χρήση εφόσον αυτό του ζητηθεί

Ως Μη Εμπορική ορίζεται η χρήση

bull που δεν περιλαμβάνει άμεσο ή έμμεσο οικονομικό όφελος από την χρήση του έργου για το διανομέα του έργου και αδειοδόχο

bull που δεν περιλαμβάνει οικονομική συναλλαγή ως προϋπόθεση για τη χρήση ή πρόσβαση στο έργο

bull που δεν προσπορίζει στο διανομέα του έργου και αδειοδόχο έμμεσο οικονομικό όφελος (πχ διαφημίσεις) από την προβολή του έργου σε διαδικτυακό τόπο

[1] httpcreativecommonsorglicensesby-nc-sa40

Σημείωμα Αδειοδότησης

ΑΡΙΣΤΟΤΕΛΕΙΟ

ΠΑΝΕΠΙΣΤΗΜΙΟ

ΘΕΣΣΑΛΟΝΙΚΗΣ

ΑΝΟΙΚΤΑ

ΑΚΑΔΗΜΑΪΚΑ

ΜΑΘΗΜΑΤΑ

Τέλος ενότητας

Επεξεργασία Ανδρέας ΚοσματόπουλοςΘεσσαλονίκη Αύγουστος 2015

ΑΡΙΣΤΟΤΕΛΕΙΟ

ΠΑΝΕΠΙΣΤΗΜΙΟ

ΘΕΣΣΑΛΟΝΙΚΗΣ

Σημειώματα

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Σημείωμα Ιστορικού Εκδόσεων Έργου

Το παρόν έργο αποτελεί την έκδοση 100

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Διατήρηση Σημειωμάτων

Οποιαδήποτε αναπαραγωγή ή διασκευή του υλικού θα πρέπει να συμπεριλαμβάνει

το Σημείωμα Αναφοράς

το Σημείωμα Αδειοδότησης

τη δήλωση Διατήρησης Σημειωμάτων

το Σημείωμα Χρήσης Έργων Τρίτων (εφόσον υπάρχει)

μαζί με τους συνοδευόμενους υπερσυνδέσμους

Page 5: ΑΛΟΡΙΘΜΟΙ · 2015. 9. 9. · Αλγόριθμος QuickHull (2) •πολογισμός του κυρτού (επάνω)περιβλήματος για το S 1 –ρίσκουμε

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Διαίρει και Βασίλευε

Η γνωστότερη μέθοδος σχεδιασμού αλγορίθμων

1 Διαιρούμε το στιγμιότυπο του προβλήματος σε δύο ή περισσότερα μικρότερα στιγμιότυπα

2 Επιλύουμε τα μικρότερα στιγμιότυπα αναδρομικά

3 Βρίσκουμε τη λύση στο αρχικό (μεγαλύτερο) στιγμιότυπο συνδυάζοντας αυτές τις λύσεις

5

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

υποπρόβλημα 2 μεγέθους n2

υποπρόβλημα 1 μεγέθους n2

μία λύση για το υποπρόβλημα 1

Η λύση για το αρχικό πρόβλημα

μία λύση για το υποπρόβλημα 2

Πρόβλημαμεγέθους n

Διαίρει και Βασίλευε

6

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Παραδείγματα Διαίρει και Βασίλευε

bull Ταξινόμηση με συγχώνευση και γρήγορη ταξινόμηση

bull Διασχίσεις δένδρων

bull Δυαδική αναζήτηση ()

bull Πολλαπλασιασμός πινάκων ndash Αλγόριθμος του Strassen

bull Κυρτό περίβλημα - Αλγόριθμος QuickHull

7

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Γενική αναδρομή του Διαίρει και Βασίλευε

T(n) = aT(nb) + f (n) όπου f (n) isin Θ(nk) kge0

1 a lt bk T(n) isin Θ(nk)

2 a = bk T(n) isin Θ(nk lg n )

3 a gt bk T(n) isin Θ(nlog b a)

Σημείωση το ίδιο αποτέλεσμα ισχύει για το συμβολισμό O αντί για το Θ

8

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Ταξινόμηση με συγχώνευση (1)

Αλγόριθμος

bull Διαιρούμε τον πίνακα A[1n] σε δύο τμήματα και αντιγράφουμε το καθένα στους πίνακες B[1 n2 ] και C[1 n2 ]

bull Ταξινομούμε τους πίνακες B και C

bull Συγχωνεύουμε τους πίνακες B και C στον πίνακα A ως εξήςndash Επαναλαμβάνουμε μέχρι να μη μείνει κάποιο στοιχείο σε έναν από

τους πίνακες

bull Συγκρίνουμε τα πρώτα στοιχεία στα εναπομένοντα μη επεξεργασμένα τμήματα των πινάκων

bull Αντιγράφουμε το μικρότερο από τα δύο στοιχεία στον πίνακα A ενώ αυξάνουνε το δείκτη προς το μη επεξεργασμένο τμήμα του

ndash Όταν επεξεργασθούμε όλα τα στοιχεία του ενός πίνακα τότε αντιγράφουμε στον πίνακα Α τα υπόλοιπα μη επεξεργασθέντα στοιχεία από τον άλλο πίνακα

9

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Ταξινόμηση με συγχώνευση (2)

10

Algorithm Mergesort(A[0n-1]) Sorts array A[0n-1] by recursive mergesort

Input An array A[0n-1] of orderable elements

Output Array A[0n-1] sorted in nondecreasing

order

if ngt1

copy A[0n2-1] to B[0n2-1]

copy A[n2n-1] to C[0n2-1]

Mergesort(B[0n2-1])

Mergesort(C[0n2-1])

Merge(B C A)

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Ταξινόμηση με συγχώνευση (3)

11

Algorithm Merge(B[0p-1] C[0q-1] A[0p+q-1])

Merges two sorted arrays into one sorted array

Input Arrays B[0p-1] and C[0q-1] both sorted

Output Sorted array A[0p+q-1] of the elements of B and C

i 0 j 0 k 0

while i lt p and j lt q do

if B[i] le C[j] A[k] B[i] i++

else A[k] C[j] j++

k++

if i = p copy C[jq-1] to A[kp+q-1]

else copy B[ip-1] to A[kp+q-1]

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Ταξινόμηση με συγχώνευση (4)

12

4 2 8 1 3 9 5 6

4 2 8 1 3 9 5 6

4 2 8 1 3 9 5 6

4 2 8 1 3 9 5 6

2 4 1 8 3 9 5 6

1 2 4 8 3 5 6 9

1 2 3 4 5 6 8 9

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αποδοτικότητα της ταξινόμησης με συγχώνευση

bull C(n) = 2 C(n2) + Cmerge(n) for ngt1 C(1)=0

bull Όλες οι περιπτώσεις έχουν την ίδια αποδοτικότητα Θ(n log n)

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

ndash log n asymp n lg n - 144 n

bull Απαιτήσεις χώρου Θ(n) (δεν είναι in-place)

bull Μπορεί να υλοποιηθεί χωρίς αναδρομή (bottom-up)

13

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Γρήγορη Ταξινόμηση (1)

bull Επιλέγουμε ένα αξονικό στοιχείο ως άξονα (το στοιχείο της διαμέρισης)

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

bull Ανταλλάσουμε τον άξονα με το τελευταίο στοιχείο της πρώτης λίστας (δηλαδή τη λίστα le ) οπότε ο άξονας λαμβάνει την τελική του θέση

bull Ταξινομούμε τις δύο λίστες

14

p

A[i]lep A[i]gtp

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Γρήγορη Ταξινόμηση (2)

Algorithm Quicksort(A[lr]) Input an array A[0n-1] of orderable

elements

Output Array A[0n-1] sorted ascendingly

if lltr

s partition(A[lr])

quicksort(A[ls-1])

quicksort(A[s+1r])

15

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Γρήγορη Ταξινόμηση (3)

Algorithm Partition(A[lr]) Partitions a subarray by using its first

element as pivot Input a subarray A[lr] lltr Output A partition of A[lr] with the

split position returned as this functionrsquos value

pA[l] il jr+1repeat

repeat ii+1 until A[i]geprepeat jj-1 until A[j]lepswap(A[i]A[j])

until igejswap(A[i]A[j]) εξουδετέρωση αλλαγής όταν

igejswap(A[l]A[j])return j

16

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Γρήγορη Ταξινόμηση (4)

Παράδειγμα

5 3 1 9 8 2 4 7

Ποιά είναι η σειρά των κλήσεων συναρτήσεων

17

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Γρήγορη Ταξινόμηση (5)

bull Καλύτερη περίπτωση χωρισμός στη μέση mdash Θ(n log n)

bull Χειρότερη περίπτωση ταξινομημένος πίνακας mdash Θ(n2)

bull Μέση περίπτωση τυχαίος πίνακας mdash Θ(n log n)

bull Βελτιώσεις

ndash Καλύτερη επιλογή του άξονα το μεσαίο από 3 στοιχεία αποφεύγει τη χειρότερη περίπτωση σε ταξινομημένα αρχεία

ndash Γυρνούμε σε ταξινόμηση με εισαγωγή για μικρά υποαρχεία

ndash Αποφεύγουμε την αναδρομή

Μπορούν να δώσουν βελτίωση μέχρι 20-25

bull Θεωρείται η καλύτερη μέθοδος για εσωτερική ταξινόμηση μεγάλων αρχείων (n ge 10000)

18

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Πολλαπλασιασμός μεγάλων ακεραίων (1)

bull Για να πολλαπλασιάσουμε δύο ακεραίους με n1 και n2 ψηφία με το χέρι θα εκτελέσουμε n1n2 πράξεις πολλαπλασιασμού

bull Πρόβλημα όταν έχουμε πολλά ψηφία

ndash A = 12345678901357986429 B = 87654321284820912836

bull Ας δούμε ένα απλούστερο παράδειγμα 2314

- Όμως 23 = 2101+3100 14 = 1101+4100

- Άρα 2314 = (21)102 +(24+31)101 + (34) 100

bull Αν A = 2135 B = 4014

ΑΒ= (21 middot102 + 35) (40 middot102 + 14)

= 21 40 middot104 + (21 14 + 35 40) middot102 + 35 14

19

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Πολλαπλασιασμός μεγάλων ακεραίων (2)

bull Βασική παρατήρηση

α) 2314 = (21)102 +(24+31)101 + (34) 100

= (21)102 +[(2+3)(1+4)-21-34]101 + (34) 100

bull β) 2135 4014 = 21 40 middot104 + (21 14 + 35 40) middot102 + 35 14

= 21 40 middot104 + [(21+35) (40+14) ndash 2140-3514] middot102 + 35 14

bull Γενικώς a=a1a0 b=b1b0 και ζητείται c=ab c = ab = c210n + c1

10n2

+ c0100 όπου c2=a1b1 c0=a0b0 c1=(a1+a0)(b1+b0)-(c2+c0)

bull Αναδρομική εξίσωση M(n) = 3M(n2) M(1) = 1

bull Αποδοτικότητα M(n) = 3log 2n = nlog 23 asymp n1585

20

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Πολλαπλασιασμός πινάκων αλά Strassen

bull Ο Strassen παρατήρησε [1969] ότι το γινόμενο δύο πινάκων A και B (μεγέθους2nx2n) μπορεί να υπολογισθεί ως εξής

C00 1198620111986210 11986211

=A00 1198600111986010 11986011

lowastB00 1198610111986110 11986111

1198721+1198724minus1198725+1198727 1198723+1198725

1198722+1198724 1198721+1198723minus1198722+1198726

21

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Υποπίνακες του Strassen

bull M1 = (A00 + A11) (B00 + B11)

bull M2 = (A10 + A11) B00

bull M3 = A00 (B01 - B11)

bull M4 = A11 (B10 - B00)

bull M5 = (A00 + A01) B11

bull M6 = (A10 - A00) (B00 + B01)

bull M7 = (A01 - A11) (B10 + B11)

22

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αποδοτικότητα του αλγορίθμου Strassen

bull Αν το n δεν είναι δύναμη του 2 τότε οι πίνακες παραγεμίζονται με μηδενικά

bull Πλήθος πολλαπλασιασμών

bull Πλήθος προσθέσεων

bull Αναδρομή

bull Άλλοι αλγόριθμοι έχουν βελτιώσει αυτό το αποτέλεσμα αλλά είναι ακόμη περισσότεροι σύνθετοι

23

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Το πρόβλημα του πλησιέστερου ζεύγους

bull Πρόβλημα βρες τα πλησιέστερα σημεία μεταξύ n σημείων σε ένα k-διάστατο χώρο

bull Υποθέτουμε ότι τα σημεία ταξινομούνται με βάση τις τιμές των τετμημένων x

bull Διαιρούμε τα σημεία σε δύο υποσύνολα S1 και S2 με n2 σημεία με βάση μία κατακόρυφη γραμμή στο x=c

bull Επιλέγουμε το πλησιέστερο ζεύγος μεταξύ των ζευγών του αριστερού υποσυνόλου (απόσταση d1) μεταξύ των ζευγών του δεξιού υποσυνόλου (απόσταση d2) και το πλησιέστερο ζεύγος με σημεία και από τις δύο πλευρές

bull Πρέπει να εξετάσουμε μία λωρίδα πλάτους 2d όπουd=min[d1d2]

24

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Το πρόβλημα του πλησιέστερου ζεύγους (2)

bull Γεωμετρική εξήγηση

bull Αναδρομή T(n) = 2T(n2) + M(n)

bull Αποδοτικότητα O(n logn)

bull Βελτιστότητα

25

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αλγόριθμος QuickHull

Υπολογίζει το Κυρτό Περίβλημα με έμπνευση από τη Γρήγορη Ταξινόμηση

bull Υποθέτουμε ότι τα σημεία είναι ταξινομημένα ως προς την συντεταγμένη x

bull Προσδιορίζουμε δύο ακραία σημαία P1 και P2 (μέρη του περιβλήματος)

bull Το σύνολο σημείων S διαιρείται σε δύο υποσύνολα S1 και S2

bull Υπολογίζουμε το κυρτό περίβλημα για το S1

bull Ομοίως υπολογίζουμε το κυρτό περίβλημα για το S1

26

P1

P2

Pmax

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αλγόριθμος QuickHull (2)

bull Υπολογισμός του κυρτού (επάνω) περιβλήματος για το S1

ndashΒρίσκουμε το πιο απομακρυσμένο σημείο Pmax από τη γραμμή P1P2

ndash Υπολογίζουμε το περίβλημα για τα σημεία αριστερά της γραμμής P1Pmax

ndash Υπολογίζουμε το περίβλημα για τα σημεία αριστερά της γραμμής PmaxP2

bull Εύρεση του σημείου Pmax

ndash Το Pmax μεγιστοποιεί την επιφάνεια του τριγώνου PmaxP1P2

ndash Σε περίπτωση ισοπαλίας επιλέγεται το Pmax που μεγιστοποιεί τη γωνία PmaxP1P2

bull Τα σημεία μέσα στο τρίγωνο PmaxP1P2 αγνοούνται εφεξής

bull Πως θα βρεθεί γεωμετρικά το σημείο Pmax και τα σημεία στα αριστερά της γραμμής P1Pmax

27

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αλγόριθμος QuickHull (3)

28

bull Πως θα βρεθεί γεωμετρικά το σημείο Pmax και τα σημεία στα αριστερά της γραμμής P1Pmax

ndash Δίνονται τα σημεία P1(x1y1) P2(x2y2) Pmax(xmaxymax)

ndash Το εμβαδόν του τριγώνου είναι μισό του μεγέθους της ορίζουσας

1199091 1199101 11199092 1199102 1119909119898119886119909 119910119898119886119909 1

= x1y2+xmaxy1+x2ymaxndashxmaxy2ndashx2y1-x1ymax

ndash Το πρόσημο της έκφρασης είναι θετικό αν και μόνο αν το σημείο Pmax

είναι στα αριστερά της γραμμής P1P2

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αποδοτικότητα Αλγορίθμου QuickHull (4)

bull Η εύρεση του πλέον απομακρυσμένου σημείου από την ευθεία P1P2 μπορεί να βρεθεί σε γραμμικό χρόνο

bull Έτσι προκύπτει η ίδια πολυπλοκότητα με τη γρήγορη ταξινόμησηndash Χειρότερη περίπτωση Θ(n2)

ndash Μέση περίπτωση Θ(n log n)

bull Αν τα σημεία δεν είναι αρχικά ταξινομημένα στον άξονα x αυτό επιτυγχάνεται με κόστος Θ(n log n)

bull Άλλοι αλγόριθμοι για το κυρτό περίβλημαndash Σάρωση του Graham DCHull

Επίσης σε Θ(n log n)

29

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Δυαδική Αναζήτηση

Πολύ αποδοτικός αλγόριθμος για αναζήτηση σε ταξινομημένο πίνακα

K

vs

A[0] A[m] A[n-1]

Αν K = A[m] σταμάτησε (επιτυχημένη αναζήτηση Διαφορετικά συνέχισε την αναζήτηση με όμοιο τρόπο στον πίνακα A[0m-1] αν K lt A[m] ή στον A[m+1n-1] αν K gt A[m]

l 0 r n-1

while l r do

m (l+r)2

if K = A[m] return m

else if K lt A[m] r m-1

else l m+1

return -1

30

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Ανάλυση Δυαδικής Αναζήτησης

bull Χρονική αποδοτικότηταndash Χειρότερη περίπτωση Cw (n) = 1 + Cw( n2 ) Cw (1) = 1

ndash Λύση Cw(n) = log2(n+1)

Αυτό είναι πολύ γρήγορο πχ Cw(106) = 20

bull Βέλτιστη μέθοδος για αναζήτηση σε ταξινομημένο πίνακα

bull Περιορισμοί η είσοδος πρέπει να είναι ταξινομημένη και στη μορφή πίνακα όχι πχ συνδεδεμένη λίστα

bull ΟΧΙ καλό παράδειγμα τεχνικής laquoδιαίρει και βασίλευεraquo

bull Υπάρχει ανάλογη τεχνική για τη συνεχή περίπτωση

31

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

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

Τα δυαδικά δένδρα έχουν έτοιμη τη δομή για αλγορίθμους διαίρει και βασίλευε

Πχ κλασικές διασχίσεις (προμεταενδο-διατεταγμένη)

Algorithm Inorder(T)

if T

Inorder(Tleft)

print(root of T)

Inorder(Tright)

ΑποδοτικότηταΘ(n)

32

a

b c

d e

a

b c

d e

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αλγόριθμοι Δυαδικών Δένδρων (2)

33

Άλλο παράδειγμα υπολογισμός ύψους

bull h(T) = maxh(TL) h(TR) + 1 if T and h() = -1

bull Αποδοτικότητα Θ(n)

TL TR

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Σημείωμα Αναφοράς

Copyright Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Ιωάννης Μανωλόπουλος Αναστάσιος Γούναρης laquoΑλγόριθμοι raquo Έκδοση 10 Θεσσαλονίκη 2015 Διαθέσιμο από τη δικτυακή διεύθυνσηhttpeclassauthgrcoursesOCRS417

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons Αναφορά -Μη Εμπορική Χρήση - Παρόμοια Διανομή 40 [1] ή μεταγενέστερη Διεθνής Έκδοση Εξαιρούνται τα αυτοτελή έργα τρίτων πχ φωτογραφίες διαγράμματα κλπ τα οποία εμπεριέχονται σε αυτό και τα οποία αναφέρονται μαζί με τους όρους χρήσης τους στο laquoΣημείωμα Χρήσης Έργων Τρίτωνraquo

Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο

για εμπορική χρήση εφόσον αυτό του ζητηθεί

Ως Μη Εμπορική ορίζεται η χρήση

bull που δεν περιλαμβάνει άμεσο ή έμμεσο οικονομικό όφελος από την χρήση του έργου για το διανομέα του έργου και αδειοδόχο

bull που δεν περιλαμβάνει οικονομική συναλλαγή ως προϋπόθεση για τη χρήση ή πρόσβαση στο έργο

bull που δεν προσπορίζει στο διανομέα του έργου και αδειοδόχο έμμεσο οικονομικό όφελος (πχ διαφημίσεις) από την προβολή του έργου σε διαδικτυακό τόπο

[1] httpcreativecommonsorglicensesby-nc-sa40

Σημείωμα Αδειοδότησης

ΑΡΙΣΤΟΤΕΛΕΙΟ

ΠΑΝΕΠΙΣΤΗΜΙΟ

ΘΕΣΣΑΛΟΝΙΚΗΣ

ΑΝΟΙΚΤΑ

ΑΚΑΔΗΜΑΪΚΑ

ΜΑΘΗΜΑΤΑ

Τέλος ενότητας

Επεξεργασία Ανδρέας ΚοσματόπουλοςΘεσσαλονίκη Αύγουστος 2015

ΑΡΙΣΤΟΤΕΛΕΙΟ

ΠΑΝΕΠΙΣΤΗΜΙΟ

ΘΕΣΣΑΛΟΝΙΚΗΣ

Σημειώματα

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Σημείωμα Ιστορικού Εκδόσεων Έργου

Το παρόν έργο αποτελεί την έκδοση 100

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Διατήρηση Σημειωμάτων

Οποιαδήποτε αναπαραγωγή ή διασκευή του υλικού θα πρέπει να συμπεριλαμβάνει

το Σημείωμα Αναφοράς

το Σημείωμα Αδειοδότησης

τη δήλωση Διατήρησης Σημειωμάτων

το Σημείωμα Χρήσης Έργων Τρίτων (εφόσον υπάρχει)

μαζί με τους συνοδευόμενους υπερσυνδέσμους

Page 6: ΑΛΟΡΙΘΜΟΙ · 2015. 9. 9. · Αλγόριθμος QuickHull (2) •πολογισμός του κυρτού (επάνω)περιβλήματος για το S 1 –ρίσκουμε

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

υποπρόβλημα 2 μεγέθους n2

υποπρόβλημα 1 μεγέθους n2

μία λύση για το υποπρόβλημα 1

Η λύση για το αρχικό πρόβλημα

μία λύση για το υποπρόβλημα 2

Πρόβλημαμεγέθους n

Διαίρει και Βασίλευε

6

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Παραδείγματα Διαίρει και Βασίλευε

bull Ταξινόμηση με συγχώνευση και γρήγορη ταξινόμηση

bull Διασχίσεις δένδρων

bull Δυαδική αναζήτηση ()

bull Πολλαπλασιασμός πινάκων ndash Αλγόριθμος του Strassen

bull Κυρτό περίβλημα - Αλγόριθμος QuickHull

7

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Γενική αναδρομή του Διαίρει και Βασίλευε

T(n) = aT(nb) + f (n) όπου f (n) isin Θ(nk) kge0

1 a lt bk T(n) isin Θ(nk)

2 a = bk T(n) isin Θ(nk lg n )

3 a gt bk T(n) isin Θ(nlog b a)

Σημείωση το ίδιο αποτέλεσμα ισχύει για το συμβολισμό O αντί για το Θ

8

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Ταξινόμηση με συγχώνευση (1)

Αλγόριθμος

bull Διαιρούμε τον πίνακα A[1n] σε δύο τμήματα και αντιγράφουμε το καθένα στους πίνακες B[1 n2 ] και C[1 n2 ]

bull Ταξινομούμε τους πίνακες B και C

bull Συγχωνεύουμε τους πίνακες B και C στον πίνακα A ως εξήςndash Επαναλαμβάνουμε μέχρι να μη μείνει κάποιο στοιχείο σε έναν από

τους πίνακες

bull Συγκρίνουμε τα πρώτα στοιχεία στα εναπομένοντα μη επεξεργασμένα τμήματα των πινάκων

bull Αντιγράφουμε το μικρότερο από τα δύο στοιχεία στον πίνακα A ενώ αυξάνουνε το δείκτη προς το μη επεξεργασμένο τμήμα του

ndash Όταν επεξεργασθούμε όλα τα στοιχεία του ενός πίνακα τότε αντιγράφουμε στον πίνακα Α τα υπόλοιπα μη επεξεργασθέντα στοιχεία από τον άλλο πίνακα

9

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Ταξινόμηση με συγχώνευση (2)

10

Algorithm Mergesort(A[0n-1]) Sorts array A[0n-1] by recursive mergesort

Input An array A[0n-1] of orderable elements

Output Array A[0n-1] sorted in nondecreasing

order

if ngt1

copy A[0n2-1] to B[0n2-1]

copy A[n2n-1] to C[0n2-1]

Mergesort(B[0n2-1])

Mergesort(C[0n2-1])

Merge(B C A)

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Ταξινόμηση με συγχώνευση (3)

11

Algorithm Merge(B[0p-1] C[0q-1] A[0p+q-1])

Merges two sorted arrays into one sorted array

Input Arrays B[0p-1] and C[0q-1] both sorted

Output Sorted array A[0p+q-1] of the elements of B and C

i 0 j 0 k 0

while i lt p and j lt q do

if B[i] le C[j] A[k] B[i] i++

else A[k] C[j] j++

k++

if i = p copy C[jq-1] to A[kp+q-1]

else copy B[ip-1] to A[kp+q-1]

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Ταξινόμηση με συγχώνευση (4)

12

4 2 8 1 3 9 5 6

4 2 8 1 3 9 5 6

4 2 8 1 3 9 5 6

4 2 8 1 3 9 5 6

2 4 1 8 3 9 5 6

1 2 4 8 3 5 6 9

1 2 3 4 5 6 8 9

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αποδοτικότητα της ταξινόμησης με συγχώνευση

bull C(n) = 2 C(n2) + Cmerge(n) for ngt1 C(1)=0

bull Όλες οι περιπτώσεις έχουν την ίδια αποδοτικότητα Θ(n log n)

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

ndash log n asymp n lg n - 144 n

bull Απαιτήσεις χώρου Θ(n) (δεν είναι in-place)

bull Μπορεί να υλοποιηθεί χωρίς αναδρομή (bottom-up)

13

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Γρήγορη Ταξινόμηση (1)

bull Επιλέγουμε ένα αξονικό στοιχείο ως άξονα (το στοιχείο της διαμέρισης)

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

bull Ανταλλάσουμε τον άξονα με το τελευταίο στοιχείο της πρώτης λίστας (δηλαδή τη λίστα le ) οπότε ο άξονας λαμβάνει την τελική του θέση

bull Ταξινομούμε τις δύο λίστες

14

p

A[i]lep A[i]gtp

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Γρήγορη Ταξινόμηση (2)

Algorithm Quicksort(A[lr]) Input an array A[0n-1] of orderable

elements

Output Array A[0n-1] sorted ascendingly

if lltr

s partition(A[lr])

quicksort(A[ls-1])

quicksort(A[s+1r])

15

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Γρήγορη Ταξινόμηση (3)

Algorithm Partition(A[lr]) Partitions a subarray by using its first

element as pivot Input a subarray A[lr] lltr Output A partition of A[lr] with the

split position returned as this functionrsquos value

pA[l] il jr+1repeat

repeat ii+1 until A[i]geprepeat jj-1 until A[j]lepswap(A[i]A[j])

until igejswap(A[i]A[j]) εξουδετέρωση αλλαγής όταν

igejswap(A[l]A[j])return j

16

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Γρήγορη Ταξινόμηση (4)

Παράδειγμα

5 3 1 9 8 2 4 7

Ποιά είναι η σειρά των κλήσεων συναρτήσεων

17

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Γρήγορη Ταξινόμηση (5)

bull Καλύτερη περίπτωση χωρισμός στη μέση mdash Θ(n log n)

bull Χειρότερη περίπτωση ταξινομημένος πίνακας mdash Θ(n2)

bull Μέση περίπτωση τυχαίος πίνακας mdash Θ(n log n)

bull Βελτιώσεις

ndash Καλύτερη επιλογή του άξονα το μεσαίο από 3 στοιχεία αποφεύγει τη χειρότερη περίπτωση σε ταξινομημένα αρχεία

ndash Γυρνούμε σε ταξινόμηση με εισαγωγή για μικρά υποαρχεία

ndash Αποφεύγουμε την αναδρομή

Μπορούν να δώσουν βελτίωση μέχρι 20-25

bull Θεωρείται η καλύτερη μέθοδος για εσωτερική ταξινόμηση μεγάλων αρχείων (n ge 10000)

18

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Πολλαπλασιασμός μεγάλων ακεραίων (1)

bull Για να πολλαπλασιάσουμε δύο ακεραίους με n1 και n2 ψηφία με το χέρι θα εκτελέσουμε n1n2 πράξεις πολλαπλασιασμού

bull Πρόβλημα όταν έχουμε πολλά ψηφία

ndash A = 12345678901357986429 B = 87654321284820912836

bull Ας δούμε ένα απλούστερο παράδειγμα 2314

- Όμως 23 = 2101+3100 14 = 1101+4100

- Άρα 2314 = (21)102 +(24+31)101 + (34) 100

bull Αν A = 2135 B = 4014

ΑΒ= (21 middot102 + 35) (40 middot102 + 14)

= 21 40 middot104 + (21 14 + 35 40) middot102 + 35 14

19

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Πολλαπλασιασμός μεγάλων ακεραίων (2)

bull Βασική παρατήρηση

α) 2314 = (21)102 +(24+31)101 + (34) 100

= (21)102 +[(2+3)(1+4)-21-34]101 + (34) 100

bull β) 2135 4014 = 21 40 middot104 + (21 14 + 35 40) middot102 + 35 14

= 21 40 middot104 + [(21+35) (40+14) ndash 2140-3514] middot102 + 35 14

bull Γενικώς a=a1a0 b=b1b0 και ζητείται c=ab c = ab = c210n + c1

10n2

+ c0100 όπου c2=a1b1 c0=a0b0 c1=(a1+a0)(b1+b0)-(c2+c0)

bull Αναδρομική εξίσωση M(n) = 3M(n2) M(1) = 1

bull Αποδοτικότητα M(n) = 3log 2n = nlog 23 asymp n1585

20

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Πολλαπλασιασμός πινάκων αλά Strassen

bull Ο Strassen παρατήρησε [1969] ότι το γινόμενο δύο πινάκων A και B (μεγέθους2nx2n) μπορεί να υπολογισθεί ως εξής

C00 1198620111986210 11986211

=A00 1198600111986010 11986011

lowastB00 1198610111986110 11986111

1198721+1198724minus1198725+1198727 1198723+1198725

1198722+1198724 1198721+1198723minus1198722+1198726

21

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Υποπίνακες του Strassen

bull M1 = (A00 + A11) (B00 + B11)

bull M2 = (A10 + A11) B00

bull M3 = A00 (B01 - B11)

bull M4 = A11 (B10 - B00)

bull M5 = (A00 + A01) B11

bull M6 = (A10 - A00) (B00 + B01)

bull M7 = (A01 - A11) (B10 + B11)

22

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αποδοτικότητα του αλγορίθμου Strassen

bull Αν το n δεν είναι δύναμη του 2 τότε οι πίνακες παραγεμίζονται με μηδενικά

bull Πλήθος πολλαπλασιασμών

bull Πλήθος προσθέσεων

bull Αναδρομή

bull Άλλοι αλγόριθμοι έχουν βελτιώσει αυτό το αποτέλεσμα αλλά είναι ακόμη περισσότεροι σύνθετοι

23

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Το πρόβλημα του πλησιέστερου ζεύγους

bull Πρόβλημα βρες τα πλησιέστερα σημεία μεταξύ n σημείων σε ένα k-διάστατο χώρο

bull Υποθέτουμε ότι τα σημεία ταξινομούνται με βάση τις τιμές των τετμημένων x

bull Διαιρούμε τα σημεία σε δύο υποσύνολα S1 και S2 με n2 σημεία με βάση μία κατακόρυφη γραμμή στο x=c

bull Επιλέγουμε το πλησιέστερο ζεύγος μεταξύ των ζευγών του αριστερού υποσυνόλου (απόσταση d1) μεταξύ των ζευγών του δεξιού υποσυνόλου (απόσταση d2) και το πλησιέστερο ζεύγος με σημεία και από τις δύο πλευρές

bull Πρέπει να εξετάσουμε μία λωρίδα πλάτους 2d όπουd=min[d1d2]

24

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Το πρόβλημα του πλησιέστερου ζεύγους (2)

bull Γεωμετρική εξήγηση

bull Αναδρομή T(n) = 2T(n2) + M(n)

bull Αποδοτικότητα O(n logn)

bull Βελτιστότητα

25

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αλγόριθμος QuickHull

Υπολογίζει το Κυρτό Περίβλημα με έμπνευση από τη Γρήγορη Ταξινόμηση

bull Υποθέτουμε ότι τα σημεία είναι ταξινομημένα ως προς την συντεταγμένη x

bull Προσδιορίζουμε δύο ακραία σημαία P1 και P2 (μέρη του περιβλήματος)

bull Το σύνολο σημείων S διαιρείται σε δύο υποσύνολα S1 και S2

bull Υπολογίζουμε το κυρτό περίβλημα για το S1

bull Ομοίως υπολογίζουμε το κυρτό περίβλημα για το S1

26

P1

P2

Pmax

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αλγόριθμος QuickHull (2)

bull Υπολογισμός του κυρτού (επάνω) περιβλήματος για το S1

ndashΒρίσκουμε το πιο απομακρυσμένο σημείο Pmax από τη γραμμή P1P2

ndash Υπολογίζουμε το περίβλημα για τα σημεία αριστερά της γραμμής P1Pmax

ndash Υπολογίζουμε το περίβλημα για τα σημεία αριστερά της γραμμής PmaxP2

bull Εύρεση του σημείου Pmax

ndash Το Pmax μεγιστοποιεί την επιφάνεια του τριγώνου PmaxP1P2

ndash Σε περίπτωση ισοπαλίας επιλέγεται το Pmax που μεγιστοποιεί τη γωνία PmaxP1P2

bull Τα σημεία μέσα στο τρίγωνο PmaxP1P2 αγνοούνται εφεξής

bull Πως θα βρεθεί γεωμετρικά το σημείο Pmax και τα σημεία στα αριστερά της γραμμής P1Pmax

27

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αλγόριθμος QuickHull (3)

28

bull Πως θα βρεθεί γεωμετρικά το σημείο Pmax και τα σημεία στα αριστερά της γραμμής P1Pmax

ndash Δίνονται τα σημεία P1(x1y1) P2(x2y2) Pmax(xmaxymax)

ndash Το εμβαδόν του τριγώνου είναι μισό του μεγέθους της ορίζουσας

1199091 1199101 11199092 1199102 1119909119898119886119909 119910119898119886119909 1

= x1y2+xmaxy1+x2ymaxndashxmaxy2ndashx2y1-x1ymax

ndash Το πρόσημο της έκφρασης είναι θετικό αν και μόνο αν το σημείο Pmax

είναι στα αριστερά της γραμμής P1P2

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αποδοτικότητα Αλγορίθμου QuickHull (4)

bull Η εύρεση του πλέον απομακρυσμένου σημείου από την ευθεία P1P2 μπορεί να βρεθεί σε γραμμικό χρόνο

bull Έτσι προκύπτει η ίδια πολυπλοκότητα με τη γρήγορη ταξινόμησηndash Χειρότερη περίπτωση Θ(n2)

ndash Μέση περίπτωση Θ(n log n)

bull Αν τα σημεία δεν είναι αρχικά ταξινομημένα στον άξονα x αυτό επιτυγχάνεται με κόστος Θ(n log n)

bull Άλλοι αλγόριθμοι για το κυρτό περίβλημαndash Σάρωση του Graham DCHull

Επίσης σε Θ(n log n)

29

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Δυαδική Αναζήτηση

Πολύ αποδοτικός αλγόριθμος για αναζήτηση σε ταξινομημένο πίνακα

K

vs

A[0] A[m] A[n-1]

Αν K = A[m] σταμάτησε (επιτυχημένη αναζήτηση Διαφορετικά συνέχισε την αναζήτηση με όμοιο τρόπο στον πίνακα A[0m-1] αν K lt A[m] ή στον A[m+1n-1] αν K gt A[m]

l 0 r n-1

while l r do

m (l+r)2

if K = A[m] return m

else if K lt A[m] r m-1

else l m+1

return -1

30

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Ανάλυση Δυαδικής Αναζήτησης

bull Χρονική αποδοτικότηταndash Χειρότερη περίπτωση Cw (n) = 1 + Cw( n2 ) Cw (1) = 1

ndash Λύση Cw(n) = log2(n+1)

Αυτό είναι πολύ γρήγορο πχ Cw(106) = 20

bull Βέλτιστη μέθοδος για αναζήτηση σε ταξινομημένο πίνακα

bull Περιορισμοί η είσοδος πρέπει να είναι ταξινομημένη και στη μορφή πίνακα όχι πχ συνδεδεμένη λίστα

bull ΟΧΙ καλό παράδειγμα τεχνικής laquoδιαίρει και βασίλευεraquo

bull Υπάρχει ανάλογη τεχνική για τη συνεχή περίπτωση

31

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

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

Τα δυαδικά δένδρα έχουν έτοιμη τη δομή για αλγορίθμους διαίρει και βασίλευε

Πχ κλασικές διασχίσεις (προμεταενδο-διατεταγμένη)

Algorithm Inorder(T)

if T

Inorder(Tleft)

print(root of T)

Inorder(Tright)

ΑποδοτικότηταΘ(n)

32

a

b c

d e

a

b c

d e

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αλγόριθμοι Δυαδικών Δένδρων (2)

33

Άλλο παράδειγμα υπολογισμός ύψους

bull h(T) = maxh(TL) h(TR) + 1 if T and h() = -1

bull Αποδοτικότητα Θ(n)

TL TR

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Σημείωμα Αναφοράς

Copyright Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Ιωάννης Μανωλόπουλος Αναστάσιος Γούναρης laquoΑλγόριθμοι raquo Έκδοση 10 Θεσσαλονίκη 2015 Διαθέσιμο από τη δικτυακή διεύθυνσηhttpeclassauthgrcoursesOCRS417

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons Αναφορά -Μη Εμπορική Χρήση - Παρόμοια Διανομή 40 [1] ή μεταγενέστερη Διεθνής Έκδοση Εξαιρούνται τα αυτοτελή έργα τρίτων πχ φωτογραφίες διαγράμματα κλπ τα οποία εμπεριέχονται σε αυτό και τα οποία αναφέρονται μαζί με τους όρους χρήσης τους στο laquoΣημείωμα Χρήσης Έργων Τρίτωνraquo

Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο

για εμπορική χρήση εφόσον αυτό του ζητηθεί

Ως Μη Εμπορική ορίζεται η χρήση

bull που δεν περιλαμβάνει άμεσο ή έμμεσο οικονομικό όφελος από την χρήση του έργου για το διανομέα του έργου και αδειοδόχο

bull που δεν περιλαμβάνει οικονομική συναλλαγή ως προϋπόθεση για τη χρήση ή πρόσβαση στο έργο

bull που δεν προσπορίζει στο διανομέα του έργου και αδειοδόχο έμμεσο οικονομικό όφελος (πχ διαφημίσεις) από την προβολή του έργου σε διαδικτυακό τόπο

[1] httpcreativecommonsorglicensesby-nc-sa40

Σημείωμα Αδειοδότησης

ΑΡΙΣΤΟΤΕΛΕΙΟ

ΠΑΝΕΠΙΣΤΗΜΙΟ

ΘΕΣΣΑΛΟΝΙΚΗΣ

ΑΝΟΙΚΤΑ

ΑΚΑΔΗΜΑΪΚΑ

ΜΑΘΗΜΑΤΑ

Τέλος ενότητας

Επεξεργασία Ανδρέας ΚοσματόπουλοςΘεσσαλονίκη Αύγουστος 2015

ΑΡΙΣΤΟΤΕΛΕΙΟ

ΠΑΝΕΠΙΣΤΗΜΙΟ

ΘΕΣΣΑΛΟΝΙΚΗΣ

Σημειώματα

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Σημείωμα Ιστορικού Εκδόσεων Έργου

Το παρόν έργο αποτελεί την έκδοση 100

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Διατήρηση Σημειωμάτων

Οποιαδήποτε αναπαραγωγή ή διασκευή του υλικού θα πρέπει να συμπεριλαμβάνει

το Σημείωμα Αναφοράς

το Σημείωμα Αδειοδότησης

τη δήλωση Διατήρησης Σημειωμάτων

το Σημείωμα Χρήσης Έργων Τρίτων (εφόσον υπάρχει)

μαζί με τους συνοδευόμενους υπερσυνδέσμους

Page 7: ΑΛΟΡΙΘΜΟΙ · 2015. 9. 9. · Αλγόριθμος QuickHull (2) •πολογισμός του κυρτού (επάνω)περιβλήματος για το S 1 –ρίσκουμε

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Παραδείγματα Διαίρει και Βασίλευε

bull Ταξινόμηση με συγχώνευση και γρήγορη ταξινόμηση

bull Διασχίσεις δένδρων

bull Δυαδική αναζήτηση ()

bull Πολλαπλασιασμός πινάκων ndash Αλγόριθμος του Strassen

bull Κυρτό περίβλημα - Αλγόριθμος QuickHull

7

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Γενική αναδρομή του Διαίρει και Βασίλευε

T(n) = aT(nb) + f (n) όπου f (n) isin Θ(nk) kge0

1 a lt bk T(n) isin Θ(nk)

2 a = bk T(n) isin Θ(nk lg n )

3 a gt bk T(n) isin Θ(nlog b a)

Σημείωση το ίδιο αποτέλεσμα ισχύει για το συμβολισμό O αντί για το Θ

8

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Ταξινόμηση με συγχώνευση (1)

Αλγόριθμος

bull Διαιρούμε τον πίνακα A[1n] σε δύο τμήματα και αντιγράφουμε το καθένα στους πίνακες B[1 n2 ] και C[1 n2 ]

bull Ταξινομούμε τους πίνακες B και C

bull Συγχωνεύουμε τους πίνακες B και C στον πίνακα A ως εξήςndash Επαναλαμβάνουμε μέχρι να μη μείνει κάποιο στοιχείο σε έναν από

τους πίνακες

bull Συγκρίνουμε τα πρώτα στοιχεία στα εναπομένοντα μη επεξεργασμένα τμήματα των πινάκων

bull Αντιγράφουμε το μικρότερο από τα δύο στοιχεία στον πίνακα A ενώ αυξάνουνε το δείκτη προς το μη επεξεργασμένο τμήμα του

ndash Όταν επεξεργασθούμε όλα τα στοιχεία του ενός πίνακα τότε αντιγράφουμε στον πίνακα Α τα υπόλοιπα μη επεξεργασθέντα στοιχεία από τον άλλο πίνακα

9

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Ταξινόμηση με συγχώνευση (2)

10

Algorithm Mergesort(A[0n-1]) Sorts array A[0n-1] by recursive mergesort

Input An array A[0n-1] of orderable elements

Output Array A[0n-1] sorted in nondecreasing

order

if ngt1

copy A[0n2-1] to B[0n2-1]

copy A[n2n-1] to C[0n2-1]

Mergesort(B[0n2-1])

Mergesort(C[0n2-1])

Merge(B C A)

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Ταξινόμηση με συγχώνευση (3)

11

Algorithm Merge(B[0p-1] C[0q-1] A[0p+q-1])

Merges two sorted arrays into one sorted array

Input Arrays B[0p-1] and C[0q-1] both sorted

Output Sorted array A[0p+q-1] of the elements of B and C

i 0 j 0 k 0

while i lt p and j lt q do

if B[i] le C[j] A[k] B[i] i++

else A[k] C[j] j++

k++

if i = p copy C[jq-1] to A[kp+q-1]

else copy B[ip-1] to A[kp+q-1]

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Ταξινόμηση με συγχώνευση (4)

12

4 2 8 1 3 9 5 6

4 2 8 1 3 9 5 6

4 2 8 1 3 9 5 6

4 2 8 1 3 9 5 6

2 4 1 8 3 9 5 6

1 2 4 8 3 5 6 9

1 2 3 4 5 6 8 9

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αποδοτικότητα της ταξινόμησης με συγχώνευση

bull C(n) = 2 C(n2) + Cmerge(n) for ngt1 C(1)=0

bull Όλες οι περιπτώσεις έχουν την ίδια αποδοτικότητα Θ(n log n)

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

ndash log n asymp n lg n - 144 n

bull Απαιτήσεις χώρου Θ(n) (δεν είναι in-place)

bull Μπορεί να υλοποιηθεί χωρίς αναδρομή (bottom-up)

13

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Γρήγορη Ταξινόμηση (1)

bull Επιλέγουμε ένα αξονικό στοιχείο ως άξονα (το στοιχείο της διαμέρισης)

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

bull Ανταλλάσουμε τον άξονα με το τελευταίο στοιχείο της πρώτης λίστας (δηλαδή τη λίστα le ) οπότε ο άξονας λαμβάνει την τελική του θέση

bull Ταξινομούμε τις δύο λίστες

14

p

A[i]lep A[i]gtp

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Γρήγορη Ταξινόμηση (2)

Algorithm Quicksort(A[lr]) Input an array A[0n-1] of orderable

elements

Output Array A[0n-1] sorted ascendingly

if lltr

s partition(A[lr])

quicksort(A[ls-1])

quicksort(A[s+1r])

15

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Γρήγορη Ταξινόμηση (3)

Algorithm Partition(A[lr]) Partitions a subarray by using its first

element as pivot Input a subarray A[lr] lltr Output A partition of A[lr] with the

split position returned as this functionrsquos value

pA[l] il jr+1repeat

repeat ii+1 until A[i]geprepeat jj-1 until A[j]lepswap(A[i]A[j])

until igejswap(A[i]A[j]) εξουδετέρωση αλλαγής όταν

igejswap(A[l]A[j])return j

16

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Γρήγορη Ταξινόμηση (4)

Παράδειγμα

5 3 1 9 8 2 4 7

Ποιά είναι η σειρά των κλήσεων συναρτήσεων

17

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Γρήγορη Ταξινόμηση (5)

bull Καλύτερη περίπτωση χωρισμός στη μέση mdash Θ(n log n)

bull Χειρότερη περίπτωση ταξινομημένος πίνακας mdash Θ(n2)

bull Μέση περίπτωση τυχαίος πίνακας mdash Θ(n log n)

bull Βελτιώσεις

ndash Καλύτερη επιλογή του άξονα το μεσαίο από 3 στοιχεία αποφεύγει τη χειρότερη περίπτωση σε ταξινομημένα αρχεία

ndash Γυρνούμε σε ταξινόμηση με εισαγωγή για μικρά υποαρχεία

ndash Αποφεύγουμε την αναδρομή

Μπορούν να δώσουν βελτίωση μέχρι 20-25

bull Θεωρείται η καλύτερη μέθοδος για εσωτερική ταξινόμηση μεγάλων αρχείων (n ge 10000)

18

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Πολλαπλασιασμός μεγάλων ακεραίων (1)

bull Για να πολλαπλασιάσουμε δύο ακεραίους με n1 και n2 ψηφία με το χέρι θα εκτελέσουμε n1n2 πράξεις πολλαπλασιασμού

bull Πρόβλημα όταν έχουμε πολλά ψηφία

ndash A = 12345678901357986429 B = 87654321284820912836

bull Ας δούμε ένα απλούστερο παράδειγμα 2314

- Όμως 23 = 2101+3100 14 = 1101+4100

- Άρα 2314 = (21)102 +(24+31)101 + (34) 100

bull Αν A = 2135 B = 4014

ΑΒ= (21 middot102 + 35) (40 middot102 + 14)

= 21 40 middot104 + (21 14 + 35 40) middot102 + 35 14

19

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Πολλαπλασιασμός μεγάλων ακεραίων (2)

bull Βασική παρατήρηση

α) 2314 = (21)102 +(24+31)101 + (34) 100

= (21)102 +[(2+3)(1+4)-21-34]101 + (34) 100

bull β) 2135 4014 = 21 40 middot104 + (21 14 + 35 40) middot102 + 35 14

= 21 40 middot104 + [(21+35) (40+14) ndash 2140-3514] middot102 + 35 14

bull Γενικώς a=a1a0 b=b1b0 και ζητείται c=ab c = ab = c210n + c1

10n2

+ c0100 όπου c2=a1b1 c0=a0b0 c1=(a1+a0)(b1+b0)-(c2+c0)

bull Αναδρομική εξίσωση M(n) = 3M(n2) M(1) = 1

bull Αποδοτικότητα M(n) = 3log 2n = nlog 23 asymp n1585

20

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Πολλαπλασιασμός πινάκων αλά Strassen

bull Ο Strassen παρατήρησε [1969] ότι το γινόμενο δύο πινάκων A και B (μεγέθους2nx2n) μπορεί να υπολογισθεί ως εξής

C00 1198620111986210 11986211

=A00 1198600111986010 11986011

lowastB00 1198610111986110 11986111

1198721+1198724minus1198725+1198727 1198723+1198725

1198722+1198724 1198721+1198723minus1198722+1198726

21

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Υποπίνακες του Strassen

bull M1 = (A00 + A11) (B00 + B11)

bull M2 = (A10 + A11) B00

bull M3 = A00 (B01 - B11)

bull M4 = A11 (B10 - B00)

bull M5 = (A00 + A01) B11

bull M6 = (A10 - A00) (B00 + B01)

bull M7 = (A01 - A11) (B10 + B11)

22

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αποδοτικότητα του αλγορίθμου Strassen

bull Αν το n δεν είναι δύναμη του 2 τότε οι πίνακες παραγεμίζονται με μηδενικά

bull Πλήθος πολλαπλασιασμών

bull Πλήθος προσθέσεων

bull Αναδρομή

bull Άλλοι αλγόριθμοι έχουν βελτιώσει αυτό το αποτέλεσμα αλλά είναι ακόμη περισσότεροι σύνθετοι

23

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Το πρόβλημα του πλησιέστερου ζεύγους

bull Πρόβλημα βρες τα πλησιέστερα σημεία μεταξύ n σημείων σε ένα k-διάστατο χώρο

bull Υποθέτουμε ότι τα σημεία ταξινομούνται με βάση τις τιμές των τετμημένων x

bull Διαιρούμε τα σημεία σε δύο υποσύνολα S1 και S2 με n2 σημεία με βάση μία κατακόρυφη γραμμή στο x=c

bull Επιλέγουμε το πλησιέστερο ζεύγος μεταξύ των ζευγών του αριστερού υποσυνόλου (απόσταση d1) μεταξύ των ζευγών του δεξιού υποσυνόλου (απόσταση d2) και το πλησιέστερο ζεύγος με σημεία και από τις δύο πλευρές

bull Πρέπει να εξετάσουμε μία λωρίδα πλάτους 2d όπουd=min[d1d2]

24

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Το πρόβλημα του πλησιέστερου ζεύγους (2)

bull Γεωμετρική εξήγηση

bull Αναδρομή T(n) = 2T(n2) + M(n)

bull Αποδοτικότητα O(n logn)

bull Βελτιστότητα

25

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αλγόριθμος QuickHull

Υπολογίζει το Κυρτό Περίβλημα με έμπνευση από τη Γρήγορη Ταξινόμηση

bull Υποθέτουμε ότι τα σημεία είναι ταξινομημένα ως προς την συντεταγμένη x

bull Προσδιορίζουμε δύο ακραία σημαία P1 και P2 (μέρη του περιβλήματος)

bull Το σύνολο σημείων S διαιρείται σε δύο υποσύνολα S1 και S2

bull Υπολογίζουμε το κυρτό περίβλημα για το S1

bull Ομοίως υπολογίζουμε το κυρτό περίβλημα για το S1

26

P1

P2

Pmax

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αλγόριθμος QuickHull (2)

bull Υπολογισμός του κυρτού (επάνω) περιβλήματος για το S1

ndashΒρίσκουμε το πιο απομακρυσμένο σημείο Pmax από τη γραμμή P1P2

ndash Υπολογίζουμε το περίβλημα για τα σημεία αριστερά της γραμμής P1Pmax

ndash Υπολογίζουμε το περίβλημα για τα σημεία αριστερά της γραμμής PmaxP2

bull Εύρεση του σημείου Pmax

ndash Το Pmax μεγιστοποιεί την επιφάνεια του τριγώνου PmaxP1P2

ndash Σε περίπτωση ισοπαλίας επιλέγεται το Pmax που μεγιστοποιεί τη γωνία PmaxP1P2

bull Τα σημεία μέσα στο τρίγωνο PmaxP1P2 αγνοούνται εφεξής

bull Πως θα βρεθεί γεωμετρικά το σημείο Pmax και τα σημεία στα αριστερά της γραμμής P1Pmax

27

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αλγόριθμος QuickHull (3)

28

bull Πως θα βρεθεί γεωμετρικά το σημείο Pmax και τα σημεία στα αριστερά της γραμμής P1Pmax

ndash Δίνονται τα σημεία P1(x1y1) P2(x2y2) Pmax(xmaxymax)

ndash Το εμβαδόν του τριγώνου είναι μισό του μεγέθους της ορίζουσας

1199091 1199101 11199092 1199102 1119909119898119886119909 119910119898119886119909 1

= x1y2+xmaxy1+x2ymaxndashxmaxy2ndashx2y1-x1ymax

ndash Το πρόσημο της έκφρασης είναι θετικό αν και μόνο αν το σημείο Pmax

είναι στα αριστερά της γραμμής P1P2

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αποδοτικότητα Αλγορίθμου QuickHull (4)

bull Η εύρεση του πλέον απομακρυσμένου σημείου από την ευθεία P1P2 μπορεί να βρεθεί σε γραμμικό χρόνο

bull Έτσι προκύπτει η ίδια πολυπλοκότητα με τη γρήγορη ταξινόμησηndash Χειρότερη περίπτωση Θ(n2)

ndash Μέση περίπτωση Θ(n log n)

bull Αν τα σημεία δεν είναι αρχικά ταξινομημένα στον άξονα x αυτό επιτυγχάνεται με κόστος Θ(n log n)

bull Άλλοι αλγόριθμοι για το κυρτό περίβλημαndash Σάρωση του Graham DCHull

Επίσης σε Θ(n log n)

29

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Δυαδική Αναζήτηση

Πολύ αποδοτικός αλγόριθμος για αναζήτηση σε ταξινομημένο πίνακα

K

vs

A[0] A[m] A[n-1]

Αν K = A[m] σταμάτησε (επιτυχημένη αναζήτηση Διαφορετικά συνέχισε την αναζήτηση με όμοιο τρόπο στον πίνακα A[0m-1] αν K lt A[m] ή στον A[m+1n-1] αν K gt A[m]

l 0 r n-1

while l r do

m (l+r)2

if K = A[m] return m

else if K lt A[m] r m-1

else l m+1

return -1

30

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Ανάλυση Δυαδικής Αναζήτησης

bull Χρονική αποδοτικότηταndash Χειρότερη περίπτωση Cw (n) = 1 + Cw( n2 ) Cw (1) = 1

ndash Λύση Cw(n) = log2(n+1)

Αυτό είναι πολύ γρήγορο πχ Cw(106) = 20

bull Βέλτιστη μέθοδος για αναζήτηση σε ταξινομημένο πίνακα

bull Περιορισμοί η είσοδος πρέπει να είναι ταξινομημένη και στη μορφή πίνακα όχι πχ συνδεδεμένη λίστα

bull ΟΧΙ καλό παράδειγμα τεχνικής laquoδιαίρει και βασίλευεraquo

bull Υπάρχει ανάλογη τεχνική για τη συνεχή περίπτωση

31

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

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

Τα δυαδικά δένδρα έχουν έτοιμη τη δομή για αλγορίθμους διαίρει και βασίλευε

Πχ κλασικές διασχίσεις (προμεταενδο-διατεταγμένη)

Algorithm Inorder(T)

if T

Inorder(Tleft)

print(root of T)

Inorder(Tright)

ΑποδοτικότηταΘ(n)

32

a

b c

d e

a

b c

d e

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αλγόριθμοι Δυαδικών Δένδρων (2)

33

Άλλο παράδειγμα υπολογισμός ύψους

bull h(T) = maxh(TL) h(TR) + 1 if T and h() = -1

bull Αποδοτικότητα Θ(n)

TL TR

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Σημείωμα Αναφοράς

Copyright Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Ιωάννης Μανωλόπουλος Αναστάσιος Γούναρης laquoΑλγόριθμοι raquo Έκδοση 10 Θεσσαλονίκη 2015 Διαθέσιμο από τη δικτυακή διεύθυνσηhttpeclassauthgrcoursesOCRS417

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons Αναφορά -Μη Εμπορική Χρήση - Παρόμοια Διανομή 40 [1] ή μεταγενέστερη Διεθνής Έκδοση Εξαιρούνται τα αυτοτελή έργα τρίτων πχ φωτογραφίες διαγράμματα κλπ τα οποία εμπεριέχονται σε αυτό και τα οποία αναφέρονται μαζί με τους όρους χρήσης τους στο laquoΣημείωμα Χρήσης Έργων Τρίτωνraquo

Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο

για εμπορική χρήση εφόσον αυτό του ζητηθεί

Ως Μη Εμπορική ορίζεται η χρήση

bull που δεν περιλαμβάνει άμεσο ή έμμεσο οικονομικό όφελος από την χρήση του έργου για το διανομέα του έργου και αδειοδόχο

bull που δεν περιλαμβάνει οικονομική συναλλαγή ως προϋπόθεση για τη χρήση ή πρόσβαση στο έργο

bull που δεν προσπορίζει στο διανομέα του έργου και αδειοδόχο έμμεσο οικονομικό όφελος (πχ διαφημίσεις) από την προβολή του έργου σε διαδικτυακό τόπο

[1] httpcreativecommonsorglicensesby-nc-sa40

Σημείωμα Αδειοδότησης

ΑΡΙΣΤΟΤΕΛΕΙΟ

ΠΑΝΕΠΙΣΤΗΜΙΟ

ΘΕΣΣΑΛΟΝΙΚΗΣ

ΑΝΟΙΚΤΑ

ΑΚΑΔΗΜΑΪΚΑ

ΜΑΘΗΜΑΤΑ

Τέλος ενότητας

Επεξεργασία Ανδρέας ΚοσματόπουλοςΘεσσαλονίκη Αύγουστος 2015

ΑΡΙΣΤΟΤΕΛΕΙΟ

ΠΑΝΕΠΙΣΤΗΜΙΟ

ΘΕΣΣΑΛΟΝΙΚΗΣ

Σημειώματα

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Σημείωμα Ιστορικού Εκδόσεων Έργου

Το παρόν έργο αποτελεί την έκδοση 100

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Διατήρηση Σημειωμάτων

Οποιαδήποτε αναπαραγωγή ή διασκευή του υλικού θα πρέπει να συμπεριλαμβάνει

το Σημείωμα Αναφοράς

το Σημείωμα Αδειοδότησης

τη δήλωση Διατήρησης Σημειωμάτων

το Σημείωμα Χρήσης Έργων Τρίτων (εφόσον υπάρχει)

μαζί με τους συνοδευόμενους υπερσυνδέσμους

Page 8: ΑΛΟΡΙΘΜΟΙ · 2015. 9. 9. · Αλγόριθμος QuickHull (2) •πολογισμός του κυρτού (επάνω)περιβλήματος για το S 1 –ρίσκουμε

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Γενική αναδρομή του Διαίρει και Βασίλευε

T(n) = aT(nb) + f (n) όπου f (n) isin Θ(nk) kge0

1 a lt bk T(n) isin Θ(nk)

2 a = bk T(n) isin Θ(nk lg n )

3 a gt bk T(n) isin Θ(nlog b a)

Σημείωση το ίδιο αποτέλεσμα ισχύει για το συμβολισμό O αντί για το Θ

8

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Ταξινόμηση με συγχώνευση (1)

Αλγόριθμος

bull Διαιρούμε τον πίνακα A[1n] σε δύο τμήματα και αντιγράφουμε το καθένα στους πίνακες B[1 n2 ] και C[1 n2 ]

bull Ταξινομούμε τους πίνακες B και C

bull Συγχωνεύουμε τους πίνακες B και C στον πίνακα A ως εξήςndash Επαναλαμβάνουμε μέχρι να μη μείνει κάποιο στοιχείο σε έναν από

τους πίνακες

bull Συγκρίνουμε τα πρώτα στοιχεία στα εναπομένοντα μη επεξεργασμένα τμήματα των πινάκων

bull Αντιγράφουμε το μικρότερο από τα δύο στοιχεία στον πίνακα A ενώ αυξάνουνε το δείκτη προς το μη επεξεργασμένο τμήμα του

ndash Όταν επεξεργασθούμε όλα τα στοιχεία του ενός πίνακα τότε αντιγράφουμε στον πίνακα Α τα υπόλοιπα μη επεξεργασθέντα στοιχεία από τον άλλο πίνακα

9

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Ταξινόμηση με συγχώνευση (2)

10

Algorithm Mergesort(A[0n-1]) Sorts array A[0n-1] by recursive mergesort

Input An array A[0n-1] of orderable elements

Output Array A[0n-1] sorted in nondecreasing

order

if ngt1

copy A[0n2-1] to B[0n2-1]

copy A[n2n-1] to C[0n2-1]

Mergesort(B[0n2-1])

Mergesort(C[0n2-1])

Merge(B C A)

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Ταξινόμηση με συγχώνευση (3)

11

Algorithm Merge(B[0p-1] C[0q-1] A[0p+q-1])

Merges two sorted arrays into one sorted array

Input Arrays B[0p-1] and C[0q-1] both sorted

Output Sorted array A[0p+q-1] of the elements of B and C

i 0 j 0 k 0

while i lt p and j lt q do

if B[i] le C[j] A[k] B[i] i++

else A[k] C[j] j++

k++

if i = p copy C[jq-1] to A[kp+q-1]

else copy B[ip-1] to A[kp+q-1]

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Ταξινόμηση με συγχώνευση (4)

12

4 2 8 1 3 9 5 6

4 2 8 1 3 9 5 6

4 2 8 1 3 9 5 6

4 2 8 1 3 9 5 6

2 4 1 8 3 9 5 6

1 2 4 8 3 5 6 9

1 2 3 4 5 6 8 9

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αποδοτικότητα της ταξινόμησης με συγχώνευση

bull C(n) = 2 C(n2) + Cmerge(n) for ngt1 C(1)=0

bull Όλες οι περιπτώσεις έχουν την ίδια αποδοτικότητα Θ(n log n)

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

ndash log n asymp n lg n - 144 n

bull Απαιτήσεις χώρου Θ(n) (δεν είναι in-place)

bull Μπορεί να υλοποιηθεί χωρίς αναδρομή (bottom-up)

13

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Γρήγορη Ταξινόμηση (1)

bull Επιλέγουμε ένα αξονικό στοιχείο ως άξονα (το στοιχείο της διαμέρισης)

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

bull Ανταλλάσουμε τον άξονα με το τελευταίο στοιχείο της πρώτης λίστας (δηλαδή τη λίστα le ) οπότε ο άξονας λαμβάνει την τελική του θέση

bull Ταξινομούμε τις δύο λίστες

14

p

A[i]lep A[i]gtp

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Γρήγορη Ταξινόμηση (2)

Algorithm Quicksort(A[lr]) Input an array A[0n-1] of orderable

elements

Output Array A[0n-1] sorted ascendingly

if lltr

s partition(A[lr])

quicksort(A[ls-1])

quicksort(A[s+1r])

15

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Γρήγορη Ταξινόμηση (3)

Algorithm Partition(A[lr]) Partitions a subarray by using its first

element as pivot Input a subarray A[lr] lltr Output A partition of A[lr] with the

split position returned as this functionrsquos value

pA[l] il jr+1repeat

repeat ii+1 until A[i]geprepeat jj-1 until A[j]lepswap(A[i]A[j])

until igejswap(A[i]A[j]) εξουδετέρωση αλλαγής όταν

igejswap(A[l]A[j])return j

16

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Γρήγορη Ταξινόμηση (4)

Παράδειγμα

5 3 1 9 8 2 4 7

Ποιά είναι η σειρά των κλήσεων συναρτήσεων

17

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Γρήγορη Ταξινόμηση (5)

bull Καλύτερη περίπτωση χωρισμός στη μέση mdash Θ(n log n)

bull Χειρότερη περίπτωση ταξινομημένος πίνακας mdash Θ(n2)

bull Μέση περίπτωση τυχαίος πίνακας mdash Θ(n log n)

bull Βελτιώσεις

ndash Καλύτερη επιλογή του άξονα το μεσαίο από 3 στοιχεία αποφεύγει τη χειρότερη περίπτωση σε ταξινομημένα αρχεία

ndash Γυρνούμε σε ταξινόμηση με εισαγωγή για μικρά υποαρχεία

ndash Αποφεύγουμε την αναδρομή

Μπορούν να δώσουν βελτίωση μέχρι 20-25

bull Θεωρείται η καλύτερη μέθοδος για εσωτερική ταξινόμηση μεγάλων αρχείων (n ge 10000)

18

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Πολλαπλασιασμός μεγάλων ακεραίων (1)

bull Για να πολλαπλασιάσουμε δύο ακεραίους με n1 και n2 ψηφία με το χέρι θα εκτελέσουμε n1n2 πράξεις πολλαπλασιασμού

bull Πρόβλημα όταν έχουμε πολλά ψηφία

ndash A = 12345678901357986429 B = 87654321284820912836

bull Ας δούμε ένα απλούστερο παράδειγμα 2314

- Όμως 23 = 2101+3100 14 = 1101+4100

- Άρα 2314 = (21)102 +(24+31)101 + (34) 100

bull Αν A = 2135 B = 4014

ΑΒ= (21 middot102 + 35) (40 middot102 + 14)

= 21 40 middot104 + (21 14 + 35 40) middot102 + 35 14

19

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Πολλαπλασιασμός μεγάλων ακεραίων (2)

bull Βασική παρατήρηση

α) 2314 = (21)102 +(24+31)101 + (34) 100

= (21)102 +[(2+3)(1+4)-21-34]101 + (34) 100

bull β) 2135 4014 = 21 40 middot104 + (21 14 + 35 40) middot102 + 35 14

= 21 40 middot104 + [(21+35) (40+14) ndash 2140-3514] middot102 + 35 14

bull Γενικώς a=a1a0 b=b1b0 και ζητείται c=ab c = ab = c210n + c1

10n2

+ c0100 όπου c2=a1b1 c0=a0b0 c1=(a1+a0)(b1+b0)-(c2+c0)

bull Αναδρομική εξίσωση M(n) = 3M(n2) M(1) = 1

bull Αποδοτικότητα M(n) = 3log 2n = nlog 23 asymp n1585

20

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Πολλαπλασιασμός πινάκων αλά Strassen

bull Ο Strassen παρατήρησε [1969] ότι το γινόμενο δύο πινάκων A και B (μεγέθους2nx2n) μπορεί να υπολογισθεί ως εξής

C00 1198620111986210 11986211

=A00 1198600111986010 11986011

lowastB00 1198610111986110 11986111

1198721+1198724minus1198725+1198727 1198723+1198725

1198722+1198724 1198721+1198723minus1198722+1198726

21

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Υποπίνακες του Strassen

bull M1 = (A00 + A11) (B00 + B11)

bull M2 = (A10 + A11) B00

bull M3 = A00 (B01 - B11)

bull M4 = A11 (B10 - B00)

bull M5 = (A00 + A01) B11

bull M6 = (A10 - A00) (B00 + B01)

bull M7 = (A01 - A11) (B10 + B11)

22

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αποδοτικότητα του αλγορίθμου Strassen

bull Αν το n δεν είναι δύναμη του 2 τότε οι πίνακες παραγεμίζονται με μηδενικά

bull Πλήθος πολλαπλασιασμών

bull Πλήθος προσθέσεων

bull Αναδρομή

bull Άλλοι αλγόριθμοι έχουν βελτιώσει αυτό το αποτέλεσμα αλλά είναι ακόμη περισσότεροι σύνθετοι

23

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Το πρόβλημα του πλησιέστερου ζεύγους

bull Πρόβλημα βρες τα πλησιέστερα σημεία μεταξύ n σημείων σε ένα k-διάστατο χώρο

bull Υποθέτουμε ότι τα σημεία ταξινομούνται με βάση τις τιμές των τετμημένων x

bull Διαιρούμε τα σημεία σε δύο υποσύνολα S1 και S2 με n2 σημεία με βάση μία κατακόρυφη γραμμή στο x=c

bull Επιλέγουμε το πλησιέστερο ζεύγος μεταξύ των ζευγών του αριστερού υποσυνόλου (απόσταση d1) μεταξύ των ζευγών του δεξιού υποσυνόλου (απόσταση d2) και το πλησιέστερο ζεύγος με σημεία και από τις δύο πλευρές

bull Πρέπει να εξετάσουμε μία λωρίδα πλάτους 2d όπουd=min[d1d2]

24

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Το πρόβλημα του πλησιέστερου ζεύγους (2)

bull Γεωμετρική εξήγηση

bull Αναδρομή T(n) = 2T(n2) + M(n)

bull Αποδοτικότητα O(n logn)

bull Βελτιστότητα

25

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αλγόριθμος QuickHull

Υπολογίζει το Κυρτό Περίβλημα με έμπνευση από τη Γρήγορη Ταξινόμηση

bull Υποθέτουμε ότι τα σημεία είναι ταξινομημένα ως προς την συντεταγμένη x

bull Προσδιορίζουμε δύο ακραία σημαία P1 και P2 (μέρη του περιβλήματος)

bull Το σύνολο σημείων S διαιρείται σε δύο υποσύνολα S1 και S2

bull Υπολογίζουμε το κυρτό περίβλημα για το S1

bull Ομοίως υπολογίζουμε το κυρτό περίβλημα για το S1

26

P1

P2

Pmax

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αλγόριθμος QuickHull (2)

bull Υπολογισμός του κυρτού (επάνω) περιβλήματος για το S1

ndashΒρίσκουμε το πιο απομακρυσμένο σημείο Pmax από τη γραμμή P1P2

ndash Υπολογίζουμε το περίβλημα για τα σημεία αριστερά της γραμμής P1Pmax

ndash Υπολογίζουμε το περίβλημα για τα σημεία αριστερά της γραμμής PmaxP2

bull Εύρεση του σημείου Pmax

ndash Το Pmax μεγιστοποιεί την επιφάνεια του τριγώνου PmaxP1P2

ndash Σε περίπτωση ισοπαλίας επιλέγεται το Pmax που μεγιστοποιεί τη γωνία PmaxP1P2

bull Τα σημεία μέσα στο τρίγωνο PmaxP1P2 αγνοούνται εφεξής

bull Πως θα βρεθεί γεωμετρικά το σημείο Pmax και τα σημεία στα αριστερά της γραμμής P1Pmax

27

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αλγόριθμος QuickHull (3)

28

bull Πως θα βρεθεί γεωμετρικά το σημείο Pmax και τα σημεία στα αριστερά της γραμμής P1Pmax

ndash Δίνονται τα σημεία P1(x1y1) P2(x2y2) Pmax(xmaxymax)

ndash Το εμβαδόν του τριγώνου είναι μισό του μεγέθους της ορίζουσας

1199091 1199101 11199092 1199102 1119909119898119886119909 119910119898119886119909 1

= x1y2+xmaxy1+x2ymaxndashxmaxy2ndashx2y1-x1ymax

ndash Το πρόσημο της έκφρασης είναι θετικό αν και μόνο αν το σημείο Pmax

είναι στα αριστερά της γραμμής P1P2

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αποδοτικότητα Αλγορίθμου QuickHull (4)

bull Η εύρεση του πλέον απομακρυσμένου σημείου από την ευθεία P1P2 μπορεί να βρεθεί σε γραμμικό χρόνο

bull Έτσι προκύπτει η ίδια πολυπλοκότητα με τη γρήγορη ταξινόμησηndash Χειρότερη περίπτωση Θ(n2)

ndash Μέση περίπτωση Θ(n log n)

bull Αν τα σημεία δεν είναι αρχικά ταξινομημένα στον άξονα x αυτό επιτυγχάνεται με κόστος Θ(n log n)

bull Άλλοι αλγόριθμοι για το κυρτό περίβλημαndash Σάρωση του Graham DCHull

Επίσης σε Θ(n log n)

29

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Δυαδική Αναζήτηση

Πολύ αποδοτικός αλγόριθμος για αναζήτηση σε ταξινομημένο πίνακα

K

vs

A[0] A[m] A[n-1]

Αν K = A[m] σταμάτησε (επιτυχημένη αναζήτηση Διαφορετικά συνέχισε την αναζήτηση με όμοιο τρόπο στον πίνακα A[0m-1] αν K lt A[m] ή στον A[m+1n-1] αν K gt A[m]

l 0 r n-1

while l r do

m (l+r)2

if K = A[m] return m

else if K lt A[m] r m-1

else l m+1

return -1

30

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Ανάλυση Δυαδικής Αναζήτησης

bull Χρονική αποδοτικότηταndash Χειρότερη περίπτωση Cw (n) = 1 + Cw( n2 ) Cw (1) = 1

ndash Λύση Cw(n) = log2(n+1)

Αυτό είναι πολύ γρήγορο πχ Cw(106) = 20

bull Βέλτιστη μέθοδος για αναζήτηση σε ταξινομημένο πίνακα

bull Περιορισμοί η είσοδος πρέπει να είναι ταξινομημένη και στη μορφή πίνακα όχι πχ συνδεδεμένη λίστα

bull ΟΧΙ καλό παράδειγμα τεχνικής laquoδιαίρει και βασίλευεraquo

bull Υπάρχει ανάλογη τεχνική για τη συνεχή περίπτωση

31

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

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

Τα δυαδικά δένδρα έχουν έτοιμη τη δομή για αλγορίθμους διαίρει και βασίλευε

Πχ κλασικές διασχίσεις (προμεταενδο-διατεταγμένη)

Algorithm Inorder(T)

if T

Inorder(Tleft)

print(root of T)

Inorder(Tright)

ΑποδοτικότηταΘ(n)

32

a

b c

d e

a

b c

d e

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αλγόριθμοι Δυαδικών Δένδρων (2)

33

Άλλο παράδειγμα υπολογισμός ύψους

bull h(T) = maxh(TL) h(TR) + 1 if T and h() = -1

bull Αποδοτικότητα Θ(n)

TL TR

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Σημείωμα Αναφοράς

Copyright Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Ιωάννης Μανωλόπουλος Αναστάσιος Γούναρης laquoΑλγόριθμοι raquo Έκδοση 10 Θεσσαλονίκη 2015 Διαθέσιμο από τη δικτυακή διεύθυνσηhttpeclassauthgrcoursesOCRS417

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons Αναφορά -Μη Εμπορική Χρήση - Παρόμοια Διανομή 40 [1] ή μεταγενέστερη Διεθνής Έκδοση Εξαιρούνται τα αυτοτελή έργα τρίτων πχ φωτογραφίες διαγράμματα κλπ τα οποία εμπεριέχονται σε αυτό και τα οποία αναφέρονται μαζί με τους όρους χρήσης τους στο laquoΣημείωμα Χρήσης Έργων Τρίτωνraquo

Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο

για εμπορική χρήση εφόσον αυτό του ζητηθεί

Ως Μη Εμπορική ορίζεται η χρήση

bull που δεν περιλαμβάνει άμεσο ή έμμεσο οικονομικό όφελος από την χρήση του έργου για το διανομέα του έργου και αδειοδόχο

bull που δεν περιλαμβάνει οικονομική συναλλαγή ως προϋπόθεση για τη χρήση ή πρόσβαση στο έργο

bull που δεν προσπορίζει στο διανομέα του έργου και αδειοδόχο έμμεσο οικονομικό όφελος (πχ διαφημίσεις) από την προβολή του έργου σε διαδικτυακό τόπο

[1] httpcreativecommonsorglicensesby-nc-sa40

Σημείωμα Αδειοδότησης

ΑΡΙΣΤΟΤΕΛΕΙΟ

ΠΑΝΕΠΙΣΤΗΜΙΟ

ΘΕΣΣΑΛΟΝΙΚΗΣ

ΑΝΟΙΚΤΑ

ΑΚΑΔΗΜΑΪΚΑ

ΜΑΘΗΜΑΤΑ

Τέλος ενότητας

Επεξεργασία Ανδρέας ΚοσματόπουλοςΘεσσαλονίκη Αύγουστος 2015

ΑΡΙΣΤΟΤΕΛΕΙΟ

ΠΑΝΕΠΙΣΤΗΜΙΟ

ΘΕΣΣΑΛΟΝΙΚΗΣ

Σημειώματα

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Σημείωμα Ιστορικού Εκδόσεων Έργου

Το παρόν έργο αποτελεί την έκδοση 100

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Διατήρηση Σημειωμάτων

Οποιαδήποτε αναπαραγωγή ή διασκευή του υλικού θα πρέπει να συμπεριλαμβάνει

το Σημείωμα Αναφοράς

το Σημείωμα Αδειοδότησης

τη δήλωση Διατήρησης Σημειωμάτων

το Σημείωμα Χρήσης Έργων Τρίτων (εφόσον υπάρχει)

μαζί με τους συνοδευόμενους υπερσυνδέσμους

Page 9: ΑΛΟΡΙΘΜΟΙ · 2015. 9. 9. · Αλγόριθμος QuickHull (2) •πολογισμός του κυρτού (επάνω)περιβλήματος για το S 1 –ρίσκουμε

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Ταξινόμηση με συγχώνευση (1)

Αλγόριθμος

bull Διαιρούμε τον πίνακα A[1n] σε δύο τμήματα και αντιγράφουμε το καθένα στους πίνακες B[1 n2 ] και C[1 n2 ]

bull Ταξινομούμε τους πίνακες B και C

bull Συγχωνεύουμε τους πίνακες B και C στον πίνακα A ως εξήςndash Επαναλαμβάνουμε μέχρι να μη μείνει κάποιο στοιχείο σε έναν από

τους πίνακες

bull Συγκρίνουμε τα πρώτα στοιχεία στα εναπομένοντα μη επεξεργασμένα τμήματα των πινάκων

bull Αντιγράφουμε το μικρότερο από τα δύο στοιχεία στον πίνακα A ενώ αυξάνουνε το δείκτη προς το μη επεξεργασμένο τμήμα του

ndash Όταν επεξεργασθούμε όλα τα στοιχεία του ενός πίνακα τότε αντιγράφουμε στον πίνακα Α τα υπόλοιπα μη επεξεργασθέντα στοιχεία από τον άλλο πίνακα

9

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Ταξινόμηση με συγχώνευση (2)

10

Algorithm Mergesort(A[0n-1]) Sorts array A[0n-1] by recursive mergesort

Input An array A[0n-1] of orderable elements

Output Array A[0n-1] sorted in nondecreasing

order

if ngt1

copy A[0n2-1] to B[0n2-1]

copy A[n2n-1] to C[0n2-1]

Mergesort(B[0n2-1])

Mergesort(C[0n2-1])

Merge(B C A)

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Ταξινόμηση με συγχώνευση (3)

11

Algorithm Merge(B[0p-1] C[0q-1] A[0p+q-1])

Merges two sorted arrays into one sorted array

Input Arrays B[0p-1] and C[0q-1] both sorted

Output Sorted array A[0p+q-1] of the elements of B and C

i 0 j 0 k 0

while i lt p and j lt q do

if B[i] le C[j] A[k] B[i] i++

else A[k] C[j] j++

k++

if i = p copy C[jq-1] to A[kp+q-1]

else copy B[ip-1] to A[kp+q-1]

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Ταξινόμηση με συγχώνευση (4)

12

4 2 8 1 3 9 5 6

4 2 8 1 3 9 5 6

4 2 8 1 3 9 5 6

4 2 8 1 3 9 5 6

2 4 1 8 3 9 5 6

1 2 4 8 3 5 6 9

1 2 3 4 5 6 8 9

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αποδοτικότητα της ταξινόμησης με συγχώνευση

bull C(n) = 2 C(n2) + Cmerge(n) for ngt1 C(1)=0

bull Όλες οι περιπτώσεις έχουν την ίδια αποδοτικότητα Θ(n log n)

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

ndash log n asymp n lg n - 144 n

bull Απαιτήσεις χώρου Θ(n) (δεν είναι in-place)

bull Μπορεί να υλοποιηθεί χωρίς αναδρομή (bottom-up)

13

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Γρήγορη Ταξινόμηση (1)

bull Επιλέγουμε ένα αξονικό στοιχείο ως άξονα (το στοιχείο της διαμέρισης)

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

bull Ανταλλάσουμε τον άξονα με το τελευταίο στοιχείο της πρώτης λίστας (δηλαδή τη λίστα le ) οπότε ο άξονας λαμβάνει την τελική του θέση

bull Ταξινομούμε τις δύο λίστες

14

p

A[i]lep A[i]gtp

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Γρήγορη Ταξινόμηση (2)

Algorithm Quicksort(A[lr]) Input an array A[0n-1] of orderable

elements

Output Array A[0n-1] sorted ascendingly

if lltr

s partition(A[lr])

quicksort(A[ls-1])

quicksort(A[s+1r])

15

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Γρήγορη Ταξινόμηση (3)

Algorithm Partition(A[lr]) Partitions a subarray by using its first

element as pivot Input a subarray A[lr] lltr Output A partition of A[lr] with the

split position returned as this functionrsquos value

pA[l] il jr+1repeat

repeat ii+1 until A[i]geprepeat jj-1 until A[j]lepswap(A[i]A[j])

until igejswap(A[i]A[j]) εξουδετέρωση αλλαγής όταν

igejswap(A[l]A[j])return j

16

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Γρήγορη Ταξινόμηση (4)

Παράδειγμα

5 3 1 9 8 2 4 7

Ποιά είναι η σειρά των κλήσεων συναρτήσεων

17

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Γρήγορη Ταξινόμηση (5)

bull Καλύτερη περίπτωση χωρισμός στη μέση mdash Θ(n log n)

bull Χειρότερη περίπτωση ταξινομημένος πίνακας mdash Θ(n2)

bull Μέση περίπτωση τυχαίος πίνακας mdash Θ(n log n)

bull Βελτιώσεις

ndash Καλύτερη επιλογή του άξονα το μεσαίο από 3 στοιχεία αποφεύγει τη χειρότερη περίπτωση σε ταξινομημένα αρχεία

ndash Γυρνούμε σε ταξινόμηση με εισαγωγή για μικρά υποαρχεία

ndash Αποφεύγουμε την αναδρομή

Μπορούν να δώσουν βελτίωση μέχρι 20-25

bull Θεωρείται η καλύτερη μέθοδος για εσωτερική ταξινόμηση μεγάλων αρχείων (n ge 10000)

18

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Πολλαπλασιασμός μεγάλων ακεραίων (1)

bull Για να πολλαπλασιάσουμε δύο ακεραίους με n1 και n2 ψηφία με το χέρι θα εκτελέσουμε n1n2 πράξεις πολλαπλασιασμού

bull Πρόβλημα όταν έχουμε πολλά ψηφία

ndash A = 12345678901357986429 B = 87654321284820912836

bull Ας δούμε ένα απλούστερο παράδειγμα 2314

- Όμως 23 = 2101+3100 14 = 1101+4100

- Άρα 2314 = (21)102 +(24+31)101 + (34) 100

bull Αν A = 2135 B = 4014

ΑΒ= (21 middot102 + 35) (40 middot102 + 14)

= 21 40 middot104 + (21 14 + 35 40) middot102 + 35 14

19

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Πολλαπλασιασμός μεγάλων ακεραίων (2)

bull Βασική παρατήρηση

α) 2314 = (21)102 +(24+31)101 + (34) 100

= (21)102 +[(2+3)(1+4)-21-34]101 + (34) 100

bull β) 2135 4014 = 21 40 middot104 + (21 14 + 35 40) middot102 + 35 14

= 21 40 middot104 + [(21+35) (40+14) ndash 2140-3514] middot102 + 35 14

bull Γενικώς a=a1a0 b=b1b0 και ζητείται c=ab c = ab = c210n + c1

10n2

+ c0100 όπου c2=a1b1 c0=a0b0 c1=(a1+a0)(b1+b0)-(c2+c0)

bull Αναδρομική εξίσωση M(n) = 3M(n2) M(1) = 1

bull Αποδοτικότητα M(n) = 3log 2n = nlog 23 asymp n1585

20

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Πολλαπλασιασμός πινάκων αλά Strassen

bull Ο Strassen παρατήρησε [1969] ότι το γινόμενο δύο πινάκων A και B (μεγέθους2nx2n) μπορεί να υπολογισθεί ως εξής

C00 1198620111986210 11986211

=A00 1198600111986010 11986011

lowastB00 1198610111986110 11986111

1198721+1198724minus1198725+1198727 1198723+1198725

1198722+1198724 1198721+1198723minus1198722+1198726

21

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Υποπίνακες του Strassen

bull M1 = (A00 + A11) (B00 + B11)

bull M2 = (A10 + A11) B00

bull M3 = A00 (B01 - B11)

bull M4 = A11 (B10 - B00)

bull M5 = (A00 + A01) B11

bull M6 = (A10 - A00) (B00 + B01)

bull M7 = (A01 - A11) (B10 + B11)

22

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αποδοτικότητα του αλγορίθμου Strassen

bull Αν το n δεν είναι δύναμη του 2 τότε οι πίνακες παραγεμίζονται με μηδενικά

bull Πλήθος πολλαπλασιασμών

bull Πλήθος προσθέσεων

bull Αναδρομή

bull Άλλοι αλγόριθμοι έχουν βελτιώσει αυτό το αποτέλεσμα αλλά είναι ακόμη περισσότεροι σύνθετοι

23

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Το πρόβλημα του πλησιέστερου ζεύγους

bull Πρόβλημα βρες τα πλησιέστερα σημεία μεταξύ n σημείων σε ένα k-διάστατο χώρο

bull Υποθέτουμε ότι τα σημεία ταξινομούνται με βάση τις τιμές των τετμημένων x

bull Διαιρούμε τα σημεία σε δύο υποσύνολα S1 και S2 με n2 σημεία με βάση μία κατακόρυφη γραμμή στο x=c

bull Επιλέγουμε το πλησιέστερο ζεύγος μεταξύ των ζευγών του αριστερού υποσυνόλου (απόσταση d1) μεταξύ των ζευγών του δεξιού υποσυνόλου (απόσταση d2) και το πλησιέστερο ζεύγος με σημεία και από τις δύο πλευρές

bull Πρέπει να εξετάσουμε μία λωρίδα πλάτους 2d όπουd=min[d1d2]

24

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Το πρόβλημα του πλησιέστερου ζεύγους (2)

bull Γεωμετρική εξήγηση

bull Αναδρομή T(n) = 2T(n2) + M(n)

bull Αποδοτικότητα O(n logn)

bull Βελτιστότητα

25

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αλγόριθμος QuickHull

Υπολογίζει το Κυρτό Περίβλημα με έμπνευση από τη Γρήγορη Ταξινόμηση

bull Υποθέτουμε ότι τα σημεία είναι ταξινομημένα ως προς την συντεταγμένη x

bull Προσδιορίζουμε δύο ακραία σημαία P1 και P2 (μέρη του περιβλήματος)

bull Το σύνολο σημείων S διαιρείται σε δύο υποσύνολα S1 και S2

bull Υπολογίζουμε το κυρτό περίβλημα για το S1

bull Ομοίως υπολογίζουμε το κυρτό περίβλημα για το S1

26

P1

P2

Pmax

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αλγόριθμος QuickHull (2)

bull Υπολογισμός του κυρτού (επάνω) περιβλήματος για το S1

ndashΒρίσκουμε το πιο απομακρυσμένο σημείο Pmax από τη γραμμή P1P2

ndash Υπολογίζουμε το περίβλημα για τα σημεία αριστερά της γραμμής P1Pmax

ndash Υπολογίζουμε το περίβλημα για τα σημεία αριστερά της γραμμής PmaxP2

bull Εύρεση του σημείου Pmax

ndash Το Pmax μεγιστοποιεί την επιφάνεια του τριγώνου PmaxP1P2

ndash Σε περίπτωση ισοπαλίας επιλέγεται το Pmax που μεγιστοποιεί τη γωνία PmaxP1P2

bull Τα σημεία μέσα στο τρίγωνο PmaxP1P2 αγνοούνται εφεξής

bull Πως θα βρεθεί γεωμετρικά το σημείο Pmax και τα σημεία στα αριστερά της γραμμής P1Pmax

27

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αλγόριθμος QuickHull (3)

28

bull Πως θα βρεθεί γεωμετρικά το σημείο Pmax και τα σημεία στα αριστερά της γραμμής P1Pmax

ndash Δίνονται τα σημεία P1(x1y1) P2(x2y2) Pmax(xmaxymax)

ndash Το εμβαδόν του τριγώνου είναι μισό του μεγέθους της ορίζουσας

1199091 1199101 11199092 1199102 1119909119898119886119909 119910119898119886119909 1

= x1y2+xmaxy1+x2ymaxndashxmaxy2ndashx2y1-x1ymax

ndash Το πρόσημο της έκφρασης είναι θετικό αν και μόνο αν το σημείο Pmax

είναι στα αριστερά της γραμμής P1P2

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αποδοτικότητα Αλγορίθμου QuickHull (4)

bull Η εύρεση του πλέον απομακρυσμένου σημείου από την ευθεία P1P2 μπορεί να βρεθεί σε γραμμικό χρόνο

bull Έτσι προκύπτει η ίδια πολυπλοκότητα με τη γρήγορη ταξινόμησηndash Χειρότερη περίπτωση Θ(n2)

ndash Μέση περίπτωση Θ(n log n)

bull Αν τα σημεία δεν είναι αρχικά ταξινομημένα στον άξονα x αυτό επιτυγχάνεται με κόστος Θ(n log n)

bull Άλλοι αλγόριθμοι για το κυρτό περίβλημαndash Σάρωση του Graham DCHull

Επίσης σε Θ(n log n)

29

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Δυαδική Αναζήτηση

Πολύ αποδοτικός αλγόριθμος για αναζήτηση σε ταξινομημένο πίνακα

K

vs

A[0] A[m] A[n-1]

Αν K = A[m] σταμάτησε (επιτυχημένη αναζήτηση Διαφορετικά συνέχισε την αναζήτηση με όμοιο τρόπο στον πίνακα A[0m-1] αν K lt A[m] ή στον A[m+1n-1] αν K gt A[m]

l 0 r n-1

while l r do

m (l+r)2

if K = A[m] return m

else if K lt A[m] r m-1

else l m+1

return -1

30

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Ανάλυση Δυαδικής Αναζήτησης

bull Χρονική αποδοτικότηταndash Χειρότερη περίπτωση Cw (n) = 1 + Cw( n2 ) Cw (1) = 1

ndash Λύση Cw(n) = log2(n+1)

Αυτό είναι πολύ γρήγορο πχ Cw(106) = 20

bull Βέλτιστη μέθοδος για αναζήτηση σε ταξινομημένο πίνακα

bull Περιορισμοί η είσοδος πρέπει να είναι ταξινομημένη και στη μορφή πίνακα όχι πχ συνδεδεμένη λίστα

bull ΟΧΙ καλό παράδειγμα τεχνικής laquoδιαίρει και βασίλευεraquo

bull Υπάρχει ανάλογη τεχνική για τη συνεχή περίπτωση

31

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

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

Τα δυαδικά δένδρα έχουν έτοιμη τη δομή για αλγορίθμους διαίρει και βασίλευε

Πχ κλασικές διασχίσεις (προμεταενδο-διατεταγμένη)

Algorithm Inorder(T)

if T

Inorder(Tleft)

print(root of T)

Inorder(Tright)

ΑποδοτικότηταΘ(n)

32

a

b c

d e

a

b c

d e

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αλγόριθμοι Δυαδικών Δένδρων (2)

33

Άλλο παράδειγμα υπολογισμός ύψους

bull h(T) = maxh(TL) h(TR) + 1 if T and h() = -1

bull Αποδοτικότητα Θ(n)

TL TR

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Σημείωμα Αναφοράς

Copyright Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Ιωάννης Μανωλόπουλος Αναστάσιος Γούναρης laquoΑλγόριθμοι raquo Έκδοση 10 Θεσσαλονίκη 2015 Διαθέσιμο από τη δικτυακή διεύθυνσηhttpeclassauthgrcoursesOCRS417

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons Αναφορά -Μη Εμπορική Χρήση - Παρόμοια Διανομή 40 [1] ή μεταγενέστερη Διεθνής Έκδοση Εξαιρούνται τα αυτοτελή έργα τρίτων πχ φωτογραφίες διαγράμματα κλπ τα οποία εμπεριέχονται σε αυτό και τα οποία αναφέρονται μαζί με τους όρους χρήσης τους στο laquoΣημείωμα Χρήσης Έργων Τρίτωνraquo

Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο

για εμπορική χρήση εφόσον αυτό του ζητηθεί

Ως Μη Εμπορική ορίζεται η χρήση

bull που δεν περιλαμβάνει άμεσο ή έμμεσο οικονομικό όφελος από την χρήση του έργου για το διανομέα του έργου και αδειοδόχο

bull που δεν περιλαμβάνει οικονομική συναλλαγή ως προϋπόθεση για τη χρήση ή πρόσβαση στο έργο

bull που δεν προσπορίζει στο διανομέα του έργου και αδειοδόχο έμμεσο οικονομικό όφελος (πχ διαφημίσεις) από την προβολή του έργου σε διαδικτυακό τόπο

[1] httpcreativecommonsorglicensesby-nc-sa40

Σημείωμα Αδειοδότησης

ΑΡΙΣΤΟΤΕΛΕΙΟ

ΠΑΝΕΠΙΣΤΗΜΙΟ

ΘΕΣΣΑΛΟΝΙΚΗΣ

ΑΝΟΙΚΤΑ

ΑΚΑΔΗΜΑΪΚΑ

ΜΑΘΗΜΑΤΑ

Τέλος ενότητας

Επεξεργασία Ανδρέας ΚοσματόπουλοςΘεσσαλονίκη Αύγουστος 2015

ΑΡΙΣΤΟΤΕΛΕΙΟ

ΠΑΝΕΠΙΣΤΗΜΙΟ

ΘΕΣΣΑΛΟΝΙΚΗΣ

Σημειώματα

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Σημείωμα Ιστορικού Εκδόσεων Έργου

Το παρόν έργο αποτελεί την έκδοση 100

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Διατήρηση Σημειωμάτων

Οποιαδήποτε αναπαραγωγή ή διασκευή του υλικού θα πρέπει να συμπεριλαμβάνει

το Σημείωμα Αναφοράς

το Σημείωμα Αδειοδότησης

τη δήλωση Διατήρησης Σημειωμάτων

το Σημείωμα Χρήσης Έργων Τρίτων (εφόσον υπάρχει)

μαζί με τους συνοδευόμενους υπερσυνδέσμους

Page 10: ΑΛΟΡΙΘΜΟΙ · 2015. 9. 9. · Αλγόριθμος QuickHull (2) •πολογισμός του κυρτού (επάνω)περιβλήματος για το S 1 –ρίσκουμε

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Ταξινόμηση με συγχώνευση (2)

10

Algorithm Mergesort(A[0n-1]) Sorts array A[0n-1] by recursive mergesort

Input An array A[0n-1] of orderable elements

Output Array A[0n-1] sorted in nondecreasing

order

if ngt1

copy A[0n2-1] to B[0n2-1]

copy A[n2n-1] to C[0n2-1]

Mergesort(B[0n2-1])

Mergesort(C[0n2-1])

Merge(B C A)

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Ταξινόμηση με συγχώνευση (3)

11

Algorithm Merge(B[0p-1] C[0q-1] A[0p+q-1])

Merges two sorted arrays into one sorted array

Input Arrays B[0p-1] and C[0q-1] both sorted

Output Sorted array A[0p+q-1] of the elements of B and C

i 0 j 0 k 0

while i lt p and j lt q do

if B[i] le C[j] A[k] B[i] i++

else A[k] C[j] j++

k++

if i = p copy C[jq-1] to A[kp+q-1]

else copy B[ip-1] to A[kp+q-1]

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Ταξινόμηση με συγχώνευση (4)

12

4 2 8 1 3 9 5 6

4 2 8 1 3 9 5 6

4 2 8 1 3 9 5 6

4 2 8 1 3 9 5 6

2 4 1 8 3 9 5 6

1 2 4 8 3 5 6 9

1 2 3 4 5 6 8 9

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αποδοτικότητα της ταξινόμησης με συγχώνευση

bull C(n) = 2 C(n2) + Cmerge(n) for ngt1 C(1)=0

bull Όλες οι περιπτώσεις έχουν την ίδια αποδοτικότητα Θ(n log n)

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

ndash log n asymp n lg n - 144 n

bull Απαιτήσεις χώρου Θ(n) (δεν είναι in-place)

bull Μπορεί να υλοποιηθεί χωρίς αναδρομή (bottom-up)

13

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Γρήγορη Ταξινόμηση (1)

bull Επιλέγουμε ένα αξονικό στοιχείο ως άξονα (το στοιχείο της διαμέρισης)

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

bull Ανταλλάσουμε τον άξονα με το τελευταίο στοιχείο της πρώτης λίστας (δηλαδή τη λίστα le ) οπότε ο άξονας λαμβάνει την τελική του θέση

bull Ταξινομούμε τις δύο λίστες

14

p

A[i]lep A[i]gtp

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Γρήγορη Ταξινόμηση (2)

Algorithm Quicksort(A[lr]) Input an array A[0n-1] of orderable

elements

Output Array A[0n-1] sorted ascendingly

if lltr

s partition(A[lr])

quicksort(A[ls-1])

quicksort(A[s+1r])

15

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Γρήγορη Ταξινόμηση (3)

Algorithm Partition(A[lr]) Partitions a subarray by using its first

element as pivot Input a subarray A[lr] lltr Output A partition of A[lr] with the

split position returned as this functionrsquos value

pA[l] il jr+1repeat

repeat ii+1 until A[i]geprepeat jj-1 until A[j]lepswap(A[i]A[j])

until igejswap(A[i]A[j]) εξουδετέρωση αλλαγής όταν

igejswap(A[l]A[j])return j

16

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Γρήγορη Ταξινόμηση (4)

Παράδειγμα

5 3 1 9 8 2 4 7

Ποιά είναι η σειρά των κλήσεων συναρτήσεων

17

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Γρήγορη Ταξινόμηση (5)

bull Καλύτερη περίπτωση χωρισμός στη μέση mdash Θ(n log n)

bull Χειρότερη περίπτωση ταξινομημένος πίνακας mdash Θ(n2)

bull Μέση περίπτωση τυχαίος πίνακας mdash Θ(n log n)

bull Βελτιώσεις

ndash Καλύτερη επιλογή του άξονα το μεσαίο από 3 στοιχεία αποφεύγει τη χειρότερη περίπτωση σε ταξινομημένα αρχεία

ndash Γυρνούμε σε ταξινόμηση με εισαγωγή για μικρά υποαρχεία

ndash Αποφεύγουμε την αναδρομή

Μπορούν να δώσουν βελτίωση μέχρι 20-25

bull Θεωρείται η καλύτερη μέθοδος για εσωτερική ταξινόμηση μεγάλων αρχείων (n ge 10000)

18

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Πολλαπλασιασμός μεγάλων ακεραίων (1)

bull Για να πολλαπλασιάσουμε δύο ακεραίους με n1 και n2 ψηφία με το χέρι θα εκτελέσουμε n1n2 πράξεις πολλαπλασιασμού

bull Πρόβλημα όταν έχουμε πολλά ψηφία

ndash A = 12345678901357986429 B = 87654321284820912836

bull Ας δούμε ένα απλούστερο παράδειγμα 2314

- Όμως 23 = 2101+3100 14 = 1101+4100

- Άρα 2314 = (21)102 +(24+31)101 + (34) 100

bull Αν A = 2135 B = 4014

ΑΒ= (21 middot102 + 35) (40 middot102 + 14)

= 21 40 middot104 + (21 14 + 35 40) middot102 + 35 14

19

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Πολλαπλασιασμός μεγάλων ακεραίων (2)

bull Βασική παρατήρηση

α) 2314 = (21)102 +(24+31)101 + (34) 100

= (21)102 +[(2+3)(1+4)-21-34]101 + (34) 100

bull β) 2135 4014 = 21 40 middot104 + (21 14 + 35 40) middot102 + 35 14

= 21 40 middot104 + [(21+35) (40+14) ndash 2140-3514] middot102 + 35 14

bull Γενικώς a=a1a0 b=b1b0 και ζητείται c=ab c = ab = c210n + c1

10n2

+ c0100 όπου c2=a1b1 c0=a0b0 c1=(a1+a0)(b1+b0)-(c2+c0)

bull Αναδρομική εξίσωση M(n) = 3M(n2) M(1) = 1

bull Αποδοτικότητα M(n) = 3log 2n = nlog 23 asymp n1585

20

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Πολλαπλασιασμός πινάκων αλά Strassen

bull Ο Strassen παρατήρησε [1969] ότι το γινόμενο δύο πινάκων A και B (μεγέθους2nx2n) μπορεί να υπολογισθεί ως εξής

C00 1198620111986210 11986211

=A00 1198600111986010 11986011

lowastB00 1198610111986110 11986111

1198721+1198724minus1198725+1198727 1198723+1198725

1198722+1198724 1198721+1198723minus1198722+1198726

21

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Υποπίνακες του Strassen

bull M1 = (A00 + A11) (B00 + B11)

bull M2 = (A10 + A11) B00

bull M3 = A00 (B01 - B11)

bull M4 = A11 (B10 - B00)

bull M5 = (A00 + A01) B11

bull M6 = (A10 - A00) (B00 + B01)

bull M7 = (A01 - A11) (B10 + B11)

22

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αποδοτικότητα του αλγορίθμου Strassen

bull Αν το n δεν είναι δύναμη του 2 τότε οι πίνακες παραγεμίζονται με μηδενικά

bull Πλήθος πολλαπλασιασμών

bull Πλήθος προσθέσεων

bull Αναδρομή

bull Άλλοι αλγόριθμοι έχουν βελτιώσει αυτό το αποτέλεσμα αλλά είναι ακόμη περισσότεροι σύνθετοι

23

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Το πρόβλημα του πλησιέστερου ζεύγους

bull Πρόβλημα βρες τα πλησιέστερα σημεία μεταξύ n σημείων σε ένα k-διάστατο χώρο

bull Υποθέτουμε ότι τα σημεία ταξινομούνται με βάση τις τιμές των τετμημένων x

bull Διαιρούμε τα σημεία σε δύο υποσύνολα S1 και S2 με n2 σημεία με βάση μία κατακόρυφη γραμμή στο x=c

bull Επιλέγουμε το πλησιέστερο ζεύγος μεταξύ των ζευγών του αριστερού υποσυνόλου (απόσταση d1) μεταξύ των ζευγών του δεξιού υποσυνόλου (απόσταση d2) και το πλησιέστερο ζεύγος με σημεία και από τις δύο πλευρές

bull Πρέπει να εξετάσουμε μία λωρίδα πλάτους 2d όπουd=min[d1d2]

24

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Το πρόβλημα του πλησιέστερου ζεύγους (2)

bull Γεωμετρική εξήγηση

bull Αναδρομή T(n) = 2T(n2) + M(n)

bull Αποδοτικότητα O(n logn)

bull Βελτιστότητα

25

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αλγόριθμος QuickHull

Υπολογίζει το Κυρτό Περίβλημα με έμπνευση από τη Γρήγορη Ταξινόμηση

bull Υποθέτουμε ότι τα σημεία είναι ταξινομημένα ως προς την συντεταγμένη x

bull Προσδιορίζουμε δύο ακραία σημαία P1 και P2 (μέρη του περιβλήματος)

bull Το σύνολο σημείων S διαιρείται σε δύο υποσύνολα S1 και S2

bull Υπολογίζουμε το κυρτό περίβλημα για το S1

bull Ομοίως υπολογίζουμε το κυρτό περίβλημα για το S1

26

P1

P2

Pmax

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αλγόριθμος QuickHull (2)

bull Υπολογισμός του κυρτού (επάνω) περιβλήματος για το S1

ndashΒρίσκουμε το πιο απομακρυσμένο σημείο Pmax από τη γραμμή P1P2

ndash Υπολογίζουμε το περίβλημα για τα σημεία αριστερά της γραμμής P1Pmax

ndash Υπολογίζουμε το περίβλημα για τα σημεία αριστερά της γραμμής PmaxP2

bull Εύρεση του σημείου Pmax

ndash Το Pmax μεγιστοποιεί την επιφάνεια του τριγώνου PmaxP1P2

ndash Σε περίπτωση ισοπαλίας επιλέγεται το Pmax που μεγιστοποιεί τη γωνία PmaxP1P2

bull Τα σημεία μέσα στο τρίγωνο PmaxP1P2 αγνοούνται εφεξής

bull Πως θα βρεθεί γεωμετρικά το σημείο Pmax και τα σημεία στα αριστερά της γραμμής P1Pmax

27

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αλγόριθμος QuickHull (3)

28

bull Πως θα βρεθεί γεωμετρικά το σημείο Pmax και τα σημεία στα αριστερά της γραμμής P1Pmax

ndash Δίνονται τα σημεία P1(x1y1) P2(x2y2) Pmax(xmaxymax)

ndash Το εμβαδόν του τριγώνου είναι μισό του μεγέθους της ορίζουσας

1199091 1199101 11199092 1199102 1119909119898119886119909 119910119898119886119909 1

= x1y2+xmaxy1+x2ymaxndashxmaxy2ndashx2y1-x1ymax

ndash Το πρόσημο της έκφρασης είναι θετικό αν και μόνο αν το σημείο Pmax

είναι στα αριστερά της γραμμής P1P2

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αποδοτικότητα Αλγορίθμου QuickHull (4)

bull Η εύρεση του πλέον απομακρυσμένου σημείου από την ευθεία P1P2 μπορεί να βρεθεί σε γραμμικό χρόνο

bull Έτσι προκύπτει η ίδια πολυπλοκότητα με τη γρήγορη ταξινόμησηndash Χειρότερη περίπτωση Θ(n2)

ndash Μέση περίπτωση Θ(n log n)

bull Αν τα σημεία δεν είναι αρχικά ταξινομημένα στον άξονα x αυτό επιτυγχάνεται με κόστος Θ(n log n)

bull Άλλοι αλγόριθμοι για το κυρτό περίβλημαndash Σάρωση του Graham DCHull

Επίσης σε Θ(n log n)

29

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Δυαδική Αναζήτηση

Πολύ αποδοτικός αλγόριθμος για αναζήτηση σε ταξινομημένο πίνακα

K

vs

A[0] A[m] A[n-1]

Αν K = A[m] σταμάτησε (επιτυχημένη αναζήτηση Διαφορετικά συνέχισε την αναζήτηση με όμοιο τρόπο στον πίνακα A[0m-1] αν K lt A[m] ή στον A[m+1n-1] αν K gt A[m]

l 0 r n-1

while l r do

m (l+r)2

if K = A[m] return m

else if K lt A[m] r m-1

else l m+1

return -1

30

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Ανάλυση Δυαδικής Αναζήτησης

bull Χρονική αποδοτικότηταndash Χειρότερη περίπτωση Cw (n) = 1 + Cw( n2 ) Cw (1) = 1

ndash Λύση Cw(n) = log2(n+1)

Αυτό είναι πολύ γρήγορο πχ Cw(106) = 20

bull Βέλτιστη μέθοδος για αναζήτηση σε ταξινομημένο πίνακα

bull Περιορισμοί η είσοδος πρέπει να είναι ταξινομημένη και στη μορφή πίνακα όχι πχ συνδεδεμένη λίστα

bull ΟΧΙ καλό παράδειγμα τεχνικής laquoδιαίρει και βασίλευεraquo

bull Υπάρχει ανάλογη τεχνική για τη συνεχή περίπτωση

31

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

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

Τα δυαδικά δένδρα έχουν έτοιμη τη δομή για αλγορίθμους διαίρει και βασίλευε

Πχ κλασικές διασχίσεις (προμεταενδο-διατεταγμένη)

Algorithm Inorder(T)

if T

Inorder(Tleft)

print(root of T)

Inorder(Tright)

ΑποδοτικότηταΘ(n)

32

a

b c

d e

a

b c

d e

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αλγόριθμοι Δυαδικών Δένδρων (2)

33

Άλλο παράδειγμα υπολογισμός ύψους

bull h(T) = maxh(TL) h(TR) + 1 if T and h() = -1

bull Αποδοτικότητα Θ(n)

TL TR

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Σημείωμα Αναφοράς

Copyright Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Ιωάννης Μανωλόπουλος Αναστάσιος Γούναρης laquoΑλγόριθμοι raquo Έκδοση 10 Θεσσαλονίκη 2015 Διαθέσιμο από τη δικτυακή διεύθυνσηhttpeclassauthgrcoursesOCRS417

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons Αναφορά -Μη Εμπορική Χρήση - Παρόμοια Διανομή 40 [1] ή μεταγενέστερη Διεθνής Έκδοση Εξαιρούνται τα αυτοτελή έργα τρίτων πχ φωτογραφίες διαγράμματα κλπ τα οποία εμπεριέχονται σε αυτό και τα οποία αναφέρονται μαζί με τους όρους χρήσης τους στο laquoΣημείωμα Χρήσης Έργων Τρίτωνraquo

Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο

για εμπορική χρήση εφόσον αυτό του ζητηθεί

Ως Μη Εμπορική ορίζεται η χρήση

bull που δεν περιλαμβάνει άμεσο ή έμμεσο οικονομικό όφελος από την χρήση του έργου για το διανομέα του έργου και αδειοδόχο

bull που δεν περιλαμβάνει οικονομική συναλλαγή ως προϋπόθεση για τη χρήση ή πρόσβαση στο έργο

bull που δεν προσπορίζει στο διανομέα του έργου και αδειοδόχο έμμεσο οικονομικό όφελος (πχ διαφημίσεις) από την προβολή του έργου σε διαδικτυακό τόπο

[1] httpcreativecommonsorglicensesby-nc-sa40

Σημείωμα Αδειοδότησης

ΑΡΙΣΤΟΤΕΛΕΙΟ

ΠΑΝΕΠΙΣΤΗΜΙΟ

ΘΕΣΣΑΛΟΝΙΚΗΣ

ΑΝΟΙΚΤΑ

ΑΚΑΔΗΜΑΪΚΑ

ΜΑΘΗΜΑΤΑ

Τέλος ενότητας

Επεξεργασία Ανδρέας ΚοσματόπουλοςΘεσσαλονίκη Αύγουστος 2015

ΑΡΙΣΤΟΤΕΛΕΙΟ

ΠΑΝΕΠΙΣΤΗΜΙΟ

ΘΕΣΣΑΛΟΝΙΚΗΣ

Σημειώματα

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Σημείωμα Ιστορικού Εκδόσεων Έργου

Το παρόν έργο αποτελεί την έκδοση 100

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Διατήρηση Σημειωμάτων

Οποιαδήποτε αναπαραγωγή ή διασκευή του υλικού θα πρέπει να συμπεριλαμβάνει

το Σημείωμα Αναφοράς

το Σημείωμα Αδειοδότησης

τη δήλωση Διατήρησης Σημειωμάτων

το Σημείωμα Χρήσης Έργων Τρίτων (εφόσον υπάρχει)

μαζί με τους συνοδευόμενους υπερσυνδέσμους

Page 11: ΑΛΟΡΙΘΜΟΙ · 2015. 9. 9. · Αλγόριθμος QuickHull (2) •πολογισμός του κυρτού (επάνω)περιβλήματος για το S 1 –ρίσκουμε

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Ταξινόμηση με συγχώνευση (3)

11

Algorithm Merge(B[0p-1] C[0q-1] A[0p+q-1])

Merges two sorted arrays into one sorted array

Input Arrays B[0p-1] and C[0q-1] both sorted

Output Sorted array A[0p+q-1] of the elements of B and C

i 0 j 0 k 0

while i lt p and j lt q do

if B[i] le C[j] A[k] B[i] i++

else A[k] C[j] j++

k++

if i = p copy C[jq-1] to A[kp+q-1]

else copy B[ip-1] to A[kp+q-1]

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Ταξινόμηση με συγχώνευση (4)

12

4 2 8 1 3 9 5 6

4 2 8 1 3 9 5 6

4 2 8 1 3 9 5 6

4 2 8 1 3 9 5 6

2 4 1 8 3 9 5 6

1 2 4 8 3 5 6 9

1 2 3 4 5 6 8 9

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αποδοτικότητα της ταξινόμησης με συγχώνευση

bull C(n) = 2 C(n2) + Cmerge(n) for ngt1 C(1)=0

bull Όλες οι περιπτώσεις έχουν την ίδια αποδοτικότητα Θ(n log n)

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

ndash log n asymp n lg n - 144 n

bull Απαιτήσεις χώρου Θ(n) (δεν είναι in-place)

bull Μπορεί να υλοποιηθεί χωρίς αναδρομή (bottom-up)

13

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Γρήγορη Ταξινόμηση (1)

bull Επιλέγουμε ένα αξονικό στοιχείο ως άξονα (το στοιχείο της διαμέρισης)

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

bull Ανταλλάσουμε τον άξονα με το τελευταίο στοιχείο της πρώτης λίστας (δηλαδή τη λίστα le ) οπότε ο άξονας λαμβάνει την τελική του θέση

bull Ταξινομούμε τις δύο λίστες

14

p

A[i]lep A[i]gtp

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Γρήγορη Ταξινόμηση (2)

Algorithm Quicksort(A[lr]) Input an array A[0n-1] of orderable

elements

Output Array A[0n-1] sorted ascendingly

if lltr

s partition(A[lr])

quicksort(A[ls-1])

quicksort(A[s+1r])

15

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Γρήγορη Ταξινόμηση (3)

Algorithm Partition(A[lr]) Partitions a subarray by using its first

element as pivot Input a subarray A[lr] lltr Output A partition of A[lr] with the

split position returned as this functionrsquos value

pA[l] il jr+1repeat

repeat ii+1 until A[i]geprepeat jj-1 until A[j]lepswap(A[i]A[j])

until igejswap(A[i]A[j]) εξουδετέρωση αλλαγής όταν

igejswap(A[l]A[j])return j

16

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Γρήγορη Ταξινόμηση (4)

Παράδειγμα

5 3 1 9 8 2 4 7

Ποιά είναι η σειρά των κλήσεων συναρτήσεων

17

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Γρήγορη Ταξινόμηση (5)

bull Καλύτερη περίπτωση χωρισμός στη μέση mdash Θ(n log n)

bull Χειρότερη περίπτωση ταξινομημένος πίνακας mdash Θ(n2)

bull Μέση περίπτωση τυχαίος πίνακας mdash Θ(n log n)

bull Βελτιώσεις

ndash Καλύτερη επιλογή του άξονα το μεσαίο από 3 στοιχεία αποφεύγει τη χειρότερη περίπτωση σε ταξινομημένα αρχεία

ndash Γυρνούμε σε ταξινόμηση με εισαγωγή για μικρά υποαρχεία

ndash Αποφεύγουμε την αναδρομή

Μπορούν να δώσουν βελτίωση μέχρι 20-25

bull Θεωρείται η καλύτερη μέθοδος για εσωτερική ταξινόμηση μεγάλων αρχείων (n ge 10000)

18

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Πολλαπλασιασμός μεγάλων ακεραίων (1)

bull Για να πολλαπλασιάσουμε δύο ακεραίους με n1 και n2 ψηφία με το χέρι θα εκτελέσουμε n1n2 πράξεις πολλαπλασιασμού

bull Πρόβλημα όταν έχουμε πολλά ψηφία

ndash A = 12345678901357986429 B = 87654321284820912836

bull Ας δούμε ένα απλούστερο παράδειγμα 2314

- Όμως 23 = 2101+3100 14 = 1101+4100

- Άρα 2314 = (21)102 +(24+31)101 + (34) 100

bull Αν A = 2135 B = 4014

ΑΒ= (21 middot102 + 35) (40 middot102 + 14)

= 21 40 middot104 + (21 14 + 35 40) middot102 + 35 14

19

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Πολλαπλασιασμός μεγάλων ακεραίων (2)

bull Βασική παρατήρηση

α) 2314 = (21)102 +(24+31)101 + (34) 100

= (21)102 +[(2+3)(1+4)-21-34]101 + (34) 100

bull β) 2135 4014 = 21 40 middot104 + (21 14 + 35 40) middot102 + 35 14

= 21 40 middot104 + [(21+35) (40+14) ndash 2140-3514] middot102 + 35 14

bull Γενικώς a=a1a0 b=b1b0 και ζητείται c=ab c = ab = c210n + c1

10n2

+ c0100 όπου c2=a1b1 c0=a0b0 c1=(a1+a0)(b1+b0)-(c2+c0)

bull Αναδρομική εξίσωση M(n) = 3M(n2) M(1) = 1

bull Αποδοτικότητα M(n) = 3log 2n = nlog 23 asymp n1585

20

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Πολλαπλασιασμός πινάκων αλά Strassen

bull Ο Strassen παρατήρησε [1969] ότι το γινόμενο δύο πινάκων A και B (μεγέθους2nx2n) μπορεί να υπολογισθεί ως εξής

C00 1198620111986210 11986211

=A00 1198600111986010 11986011

lowastB00 1198610111986110 11986111

1198721+1198724minus1198725+1198727 1198723+1198725

1198722+1198724 1198721+1198723minus1198722+1198726

21

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Υποπίνακες του Strassen

bull M1 = (A00 + A11) (B00 + B11)

bull M2 = (A10 + A11) B00

bull M3 = A00 (B01 - B11)

bull M4 = A11 (B10 - B00)

bull M5 = (A00 + A01) B11

bull M6 = (A10 - A00) (B00 + B01)

bull M7 = (A01 - A11) (B10 + B11)

22

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αποδοτικότητα του αλγορίθμου Strassen

bull Αν το n δεν είναι δύναμη του 2 τότε οι πίνακες παραγεμίζονται με μηδενικά

bull Πλήθος πολλαπλασιασμών

bull Πλήθος προσθέσεων

bull Αναδρομή

bull Άλλοι αλγόριθμοι έχουν βελτιώσει αυτό το αποτέλεσμα αλλά είναι ακόμη περισσότεροι σύνθετοι

23

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Το πρόβλημα του πλησιέστερου ζεύγους

bull Πρόβλημα βρες τα πλησιέστερα σημεία μεταξύ n σημείων σε ένα k-διάστατο χώρο

bull Υποθέτουμε ότι τα σημεία ταξινομούνται με βάση τις τιμές των τετμημένων x

bull Διαιρούμε τα σημεία σε δύο υποσύνολα S1 και S2 με n2 σημεία με βάση μία κατακόρυφη γραμμή στο x=c

bull Επιλέγουμε το πλησιέστερο ζεύγος μεταξύ των ζευγών του αριστερού υποσυνόλου (απόσταση d1) μεταξύ των ζευγών του δεξιού υποσυνόλου (απόσταση d2) και το πλησιέστερο ζεύγος με σημεία και από τις δύο πλευρές

bull Πρέπει να εξετάσουμε μία λωρίδα πλάτους 2d όπουd=min[d1d2]

24

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Το πρόβλημα του πλησιέστερου ζεύγους (2)

bull Γεωμετρική εξήγηση

bull Αναδρομή T(n) = 2T(n2) + M(n)

bull Αποδοτικότητα O(n logn)

bull Βελτιστότητα

25

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αλγόριθμος QuickHull

Υπολογίζει το Κυρτό Περίβλημα με έμπνευση από τη Γρήγορη Ταξινόμηση

bull Υποθέτουμε ότι τα σημεία είναι ταξινομημένα ως προς την συντεταγμένη x

bull Προσδιορίζουμε δύο ακραία σημαία P1 και P2 (μέρη του περιβλήματος)

bull Το σύνολο σημείων S διαιρείται σε δύο υποσύνολα S1 και S2

bull Υπολογίζουμε το κυρτό περίβλημα για το S1

bull Ομοίως υπολογίζουμε το κυρτό περίβλημα για το S1

26

P1

P2

Pmax

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αλγόριθμος QuickHull (2)

bull Υπολογισμός του κυρτού (επάνω) περιβλήματος για το S1

ndashΒρίσκουμε το πιο απομακρυσμένο σημείο Pmax από τη γραμμή P1P2

ndash Υπολογίζουμε το περίβλημα για τα σημεία αριστερά της γραμμής P1Pmax

ndash Υπολογίζουμε το περίβλημα για τα σημεία αριστερά της γραμμής PmaxP2

bull Εύρεση του σημείου Pmax

ndash Το Pmax μεγιστοποιεί την επιφάνεια του τριγώνου PmaxP1P2

ndash Σε περίπτωση ισοπαλίας επιλέγεται το Pmax που μεγιστοποιεί τη γωνία PmaxP1P2

bull Τα σημεία μέσα στο τρίγωνο PmaxP1P2 αγνοούνται εφεξής

bull Πως θα βρεθεί γεωμετρικά το σημείο Pmax και τα σημεία στα αριστερά της γραμμής P1Pmax

27

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αλγόριθμος QuickHull (3)

28

bull Πως θα βρεθεί γεωμετρικά το σημείο Pmax και τα σημεία στα αριστερά της γραμμής P1Pmax

ndash Δίνονται τα σημεία P1(x1y1) P2(x2y2) Pmax(xmaxymax)

ndash Το εμβαδόν του τριγώνου είναι μισό του μεγέθους της ορίζουσας

1199091 1199101 11199092 1199102 1119909119898119886119909 119910119898119886119909 1

= x1y2+xmaxy1+x2ymaxndashxmaxy2ndashx2y1-x1ymax

ndash Το πρόσημο της έκφρασης είναι θετικό αν και μόνο αν το σημείο Pmax

είναι στα αριστερά της γραμμής P1P2

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αποδοτικότητα Αλγορίθμου QuickHull (4)

bull Η εύρεση του πλέον απομακρυσμένου σημείου από την ευθεία P1P2 μπορεί να βρεθεί σε γραμμικό χρόνο

bull Έτσι προκύπτει η ίδια πολυπλοκότητα με τη γρήγορη ταξινόμησηndash Χειρότερη περίπτωση Θ(n2)

ndash Μέση περίπτωση Θ(n log n)

bull Αν τα σημεία δεν είναι αρχικά ταξινομημένα στον άξονα x αυτό επιτυγχάνεται με κόστος Θ(n log n)

bull Άλλοι αλγόριθμοι για το κυρτό περίβλημαndash Σάρωση του Graham DCHull

Επίσης σε Θ(n log n)

29

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Δυαδική Αναζήτηση

Πολύ αποδοτικός αλγόριθμος για αναζήτηση σε ταξινομημένο πίνακα

K

vs

A[0] A[m] A[n-1]

Αν K = A[m] σταμάτησε (επιτυχημένη αναζήτηση Διαφορετικά συνέχισε την αναζήτηση με όμοιο τρόπο στον πίνακα A[0m-1] αν K lt A[m] ή στον A[m+1n-1] αν K gt A[m]

l 0 r n-1

while l r do

m (l+r)2

if K = A[m] return m

else if K lt A[m] r m-1

else l m+1

return -1

30

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Ανάλυση Δυαδικής Αναζήτησης

bull Χρονική αποδοτικότηταndash Χειρότερη περίπτωση Cw (n) = 1 + Cw( n2 ) Cw (1) = 1

ndash Λύση Cw(n) = log2(n+1)

Αυτό είναι πολύ γρήγορο πχ Cw(106) = 20

bull Βέλτιστη μέθοδος για αναζήτηση σε ταξινομημένο πίνακα

bull Περιορισμοί η είσοδος πρέπει να είναι ταξινομημένη και στη μορφή πίνακα όχι πχ συνδεδεμένη λίστα

bull ΟΧΙ καλό παράδειγμα τεχνικής laquoδιαίρει και βασίλευεraquo

bull Υπάρχει ανάλογη τεχνική για τη συνεχή περίπτωση

31

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

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

Τα δυαδικά δένδρα έχουν έτοιμη τη δομή για αλγορίθμους διαίρει και βασίλευε

Πχ κλασικές διασχίσεις (προμεταενδο-διατεταγμένη)

Algorithm Inorder(T)

if T

Inorder(Tleft)

print(root of T)

Inorder(Tright)

ΑποδοτικότηταΘ(n)

32

a

b c

d e

a

b c

d e

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αλγόριθμοι Δυαδικών Δένδρων (2)

33

Άλλο παράδειγμα υπολογισμός ύψους

bull h(T) = maxh(TL) h(TR) + 1 if T and h() = -1

bull Αποδοτικότητα Θ(n)

TL TR

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Σημείωμα Αναφοράς

Copyright Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Ιωάννης Μανωλόπουλος Αναστάσιος Γούναρης laquoΑλγόριθμοι raquo Έκδοση 10 Θεσσαλονίκη 2015 Διαθέσιμο από τη δικτυακή διεύθυνσηhttpeclassauthgrcoursesOCRS417

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons Αναφορά -Μη Εμπορική Χρήση - Παρόμοια Διανομή 40 [1] ή μεταγενέστερη Διεθνής Έκδοση Εξαιρούνται τα αυτοτελή έργα τρίτων πχ φωτογραφίες διαγράμματα κλπ τα οποία εμπεριέχονται σε αυτό και τα οποία αναφέρονται μαζί με τους όρους χρήσης τους στο laquoΣημείωμα Χρήσης Έργων Τρίτωνraquo

Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο

για εμπορική χρήση εφόσον αυτό του ζητηθεί

Ως Μη Εμπορική ορίζεται η χρήση

bull που δεν περιλαμβάνει άμεσο ή έμμεσο οικονομικό όφελος από την χρήση του έργου για το διανομέα του έργου και αδειοδόχο

bull που δεν περιλαμβάνει οικονομική συναλλαγή ως προϋπόθεση για τη χρήση ή πρόσβαση στο έργο

bull που δεν προσπορίζει στο διανομέα του έργου και αδειοδόχο έμμεσο οικονομικό όφελος (πχ διαφημίσεις) από την προβολή του έργου σε διαδικτυακό τόπο

[1] httpcreativecommonsorglicensesby-nc-sa40

Σημείωμα Αδειοδότησης

ΑΡΙΣΤΟΤΕΛΕΙΟ

ΠΑΝΕΠΙΣΤΗΜΙΟ

ΘΕΣΣΑΛΟΝΙΚΗΣ

ΑΝΟΙΚΤΑ

ΑΚΑΔΗΜΑΪΚΑ

ΜΑΘΗΜΑΤΑ

Τέλος ενότητας

Επεξεργασία Ανδρέας ΚοσματόπουλοςΘεσσαλονίκη Αύγουστος 2015

ΑΡΙΣΤΟΤΕΛΕΙΟ

ΠΑΝΕΠΙΣΤΗΜΙΟ

ΘΕΣΣΑΛΟΝΙΚΗΣ

Σημειώματα

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Σημείωμα Ιστορικού Εκδόσεων Έργου

Το παρόν έργο αποτελεί την έκδοση 100

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Διατήρηση Σημειωμάτων

Οποιαδήποτε αναπαραγωγή ή διασκευή του υλικού θα πρέπει να συμπεριλαμβάνει

το Σημείωμα Αναφοράς

το Σημείωμα Αδειοδότησης

τη δήλωση Διατήρησης Σημειωμάτων

το Σημείωμα Χρήσης Έργων Τρίτων (εφόσον υπάρχει)

μαζί με τους συνοδευόμενους υπερσυνδέσμους

Page 12: ΑΛΟΡΙΘΜΟΙ · 2015. 9. 9. · Αλγόριθμος QuickHull (2) •πολογισμός του κυρτού (επάνω)περιβλήματος για το S 1 –ρίσκουμε

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Ταξινόμηση με συγχώνευση (4)

12

4 2 8 1 3 9 5 6

4 2 8 1 3 9 5 6

4 2 8 1 3 9 5 6

4 2 8 1 3 9 5 6

2 4 1 8 3 9 5 6

1 2 4 8 3 5 6 9

1 2 3 4 5 6 8 9

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αποδοτικότητα της ταξινόμησης με συγχώνευση

bull C(n) = 2 C(n2) + Cmerge(n) for ngt1 C(1)=0

bull Όλες οι περιπτώσεις έχουν την ίδια αποδοτικότητα Θ(n log n)

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

ndash log n asymp n lg n - 144 n

bull Απαιτήσεις χώρου Θ(n) (δεν είναι in-place)

bull Μπορεί να υλοποιηθεί χωρίς αναδρομή (bottom-up)

13

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Γρήγορη Ταξινόμηση (1)

bull Επιλέγουμε ένα αξονικό στοιχείο ως άξονα (το στοιχείο της διαμέρισης)

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

bull Ανταλλάσουμε τον άξονα με το τελευταίο στοιχείο της πρώτης λίστας (δηλαδή τη λίστα le ) οπότε ο άξονας λαμβάνει την τελική του θέση

bull Ταξινομούμε τις δύο λίστες

14

p

A[i]lep A[i]gtp

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Γρήγορη Ταξινόμηση (2)

Algorithm Quicksort(A[lr]) Input an array A[0n-1] of orderable

elements

Output Array A[0n-1] sorted ascendingly

if lltr

s partition(A[lr])

quicksort(A[ls-1])

quicksort(A[s+1r])

15

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Γρήγορη Ταξινόμηση (3)

Algorithm Partition(A[lr]) Partitions a subarray by using its first

element as pivot Input a subarray A[lr] lltr Output A partition of A[lr] with the

split position returned as this functionrsquos value

pA[l] il jr+1repeat

repeat ii+1 until A[i]geprepeat jj-1 until A[j]lepswap(A[i]A[j])

until igejswap(A[i]A[j]) εξουδετέρωση αλλαγής όταν

igejswap(A[l]A[j])return j

16

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Γρήγορη Ταξινόμηση (4)

Παράδειγμα

5 3 1 9 8 2 4 7

Ποιά είναι η σειρά των κλήσεων συναρτήσεων

17

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Γρήγορη Ταξινόμηση (5)

bull Καλύτερη περίπτωση χωρισμός στη μέση mdash Θ(n log n)

bull Χειρότερη περίπτωση ταξινομημένος πίνακας mdash Θ(n2)

bull Μέση περίπτωση τυχαίος πίνακας mdash Θ(n log n)

bull Βελτιώσεις

ndash Καλύτερη επιλογή του άξονα το μεσαίο από 3 στοιχεία αποφεύγει τη χειρότερη περίπτωση σε ταξινομημένα αρχεία

ndash Γυρνούμε σε ταξινόμηση με εισαγωγή για μικρά υποαρχεία

ndash Αποφεύγουμε την αναδρομή

Μπορούν να δώσουν βελτίωση μέχρι 20-25

bull Θεωρείται η καλύτερη μέθοδος για εσωτερική ταξινόμηση μεγάλων αρχείων (n ge 10000)

18

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Πολλαπλασιασμός μεγάλων ακεραίων (1)

bull Για να πολλαπλασιάσουμε δύο ακεραίους με n1 και n2 ψηφία με το χέρι θα εκτελέσουμε n1n2 πράξεις πολλαπλασιασμού

bull Πρόβλημα όταν έχουμε πολλά ψηφία

ndash A = 12345678901357986429 B = 87654321284820912836

bull Ας δούμε ένα απλούστερο παράδειγμα 2314

- Όμως 23 = 2101+3100 14 = 1101+4100

- Άρα 2314 = (21)102 +(24+31)101 + (34) 100

bull Αν A = 2135 B = 4014

ΑΒ= (21 middot102 + 35) (40 middot102 + 14)

= 21 40 middot104 + (21 14 + 35 40) middot102 + 35 14

19

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Πολλαπλασιασμός μεγάλων ακεραίων (2)

bull Βασική παρατήρηση

α) 2314 = (21)102 +(24+31)101 + (34) 100

= (21)102 +[(2+3)(1+4)-21-34]101 + (34) 100

bull β) 2135 4014 = 21 40 middot104 + (21 14 + 35 40) middot102 + 35 14

= 21 40 middot104 + [(21+35) (40+14) ndash 2140-3514] middot102 + 35 14

bull Γενικώς a=a1a0 b=b1b0 και ζητείται c=ab c = ab = c210n + c1

10n2

+ c0100 όπου c2=a1b1 c0=a0b0 c1=(a1+a0)(b1+b0)-(c2+c0)

bull Αναδρομική εξίσωση M(n) = 3M(n2) M(1) = 1

bull Αποδοτικότητα M(n) = 3log 2n = nlog 23 asymp n1585

20

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Πολλαπλασιασμός πινάκων αλά Strassen

bull Ο Strassen παρατήρησε [1969] ότι το γινόμενο δύο πινάκων A και B (μεγέθους2nx2n) μπορεί να υπολογισθεί ως εξής

C00 1198620111986210 11986211

=A00 1198600111986010 11986011

lowastB00 1198610111986110 11986111

1198721+1198724minus1198725+1198727 1198723+1198725

1198722+1198724 1198721+1198723minus1198722+1198726

21

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Υποπίνακες του Strassen

bull M1 = (A00 + A11) (B00 + B11)

bull M2 = (A10 + A11) B00

bull M3 = A00 (B01 - B11)

bull M4 = A11 (B10 - B00)

bull M5 = (A00 + A01) B11

bull M6 = (A10 - A00) (B00 + B01)

bull M7 = (A01 - A11) (B10 + B11)

22

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αποδοτικότητα του αλγορίθμου Strassen

bull Αν το n δεν είναι δύναμη του 2 τότε οι πίνακες παραγεμίζονται με μηδενικά

bull Πλήθος πολλαπλασιασμών

bull Πλήθος προσθέσεων

bull Αναδρομή

bull Άλλοι αλγόριθμοι έχουν βελτιώσει αυτό το αποτέλεσμα αλλά είναι ακόμη περισσότεροι σύνθετοι

23

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Το πρόβλημα του πλησιέστερου ζεύγους

bull Πρόβλημα βρες τα πλησιέστερα σημεία μεταξύ n σημείων σε ένα k-διάστατο χώρο

bull Υποθέτουμε ότι τα σημεία ταξινομούνται με βάση τις τιμές των τετμημένων x

bull Διαιρούμε τα σημεία σε δύο υποσύνολα S1 και S2 με n2 σημεία με βάση μία κατακόρυφη γραμμή στο x=c

bull Επιλέγουμε το πλησιέστερο ζεύγος μεταξύ των ζευγών του αριστερού υποσυνόλου (απόσταση d1) μεταξύ των ζευγών του δεξιού υποσυνόλου (απόσταση d2) και το πλησιέστερο ζεύγος με σημεία και από τις δύο πλευρές

bull Πρέπει να εξετάσουμε μία λωρίδα πλάτους 2d όπουd=min[d1d2]

24

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Το πρόβλημα του πλησιέστερου ζεύγους (2)

bull Γεωμετρική εξήγηση

bull Αναδρομή T(n) = 2T(n2) + M(n)

bull Αποδοτικότητα O(n logn)

bull Βελτιστότητα

25

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αλγόριθμος QuickHull

Υπολογίζει το Κυρτό Περίβλημα με έμπνευση από τη Γρήγορη Ταξινόμηση

bull Υποθέτουμε ότι τα σημεία είναι ταξινομημένα ως προς την συντεταγμένη x

bull Προσδιορίζουμε δύο ακραία σημαία P1 και P2 (μέρη του περιβλήματος)

bull Το σύνολο σημείων S διαιρείται σε δύο υποσύνολα S1 και S2

bull Υπολογίζουμε το κυρτό περίβλημα για το S1

bull Ομοίως υπολογίζουμε το κυρτό περίβλημα για το S1

26

P1

P2

Pmax

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αλγόριθμος QuickHull (2)

bull Υπολογισμός του κυρτού (επάνω) περιβλήματος για το S1

ndashΒρίσκουμε το πιο απομακρυσμένο σημείο Pmax από τη γραμμή P1P2

ndash Υπολογίζουμε το περίβλημα για τα σημεία αριστερά της γραμμής P1Pmax

ndash Υπολογίζουμε το περίβλημα για τα σημεία αριστερά της γραμμής PmaxP2

bull Εύρεση του σημείου Pmax

ndash Το Pmax μεγιστοποιεί την επιφάνεια του τριγώνου PmaxP1P2

ndash Σε περίπτωση ισοπαλίας επιλέγεται το Pmax που μεγιστοποιεί τη γωνία PmaxP1P2

bull Τα σημεία μέσα στο τρίγωνο PmaxP1P2 αγνοούνται εφεξής

bull Πως θα βρεθεί γεωμετρικά το σημείο Pmax και τα σημεία στα αριστερά της γραμμής P1Pmax

27

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αλγόριθμος QuickHull (3)

28

bull Πως θα βρεθεί γεωμετρικά το σημείο Pmax και τα σημεία στα αριστερά της γραμμής P1Pmax

ndash Δίνονται τα σημεία P1(x1y1) P2(x2y2) Pmax(xmaxymax)

ndash Το εμβαδόν του τριγώνου είναι μισό του μεγέθους της ορίζουσας

1199091 1199101 11199092 1199102 1119909119898119886119909 119910119898119886119909 1

= x1y2+xmaxy1+x2ymaxndashxmaxy2ndashx2y1-x1ymax

ndash Το πρόσημο της έκφρασης είναι θετικό αν και μόνο αν το σημείο Pmax

είναι στα αριστερά της γραμμής P1P2

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αποδοτικότητα Αλγορίθμου QuickHull (4)

bull Η εύρεση του πλέον απομακρυσμένου σημείου από την ευθεία P1P2 μπορεί να βρεθεί σε γραμμικό χρόνο

bull Έτσι προκύπτει η ίδια πολυπλοκότητα με τη γρήγορη ταξινόμησηndash Χειρότερη περίπτωση Θ(n2)

ndash Μέση περίπτωση Θ(n log n)

bull Αν τα σημεία δεν είναι αρχικά ταξινομημένα στον άξονα x αυτό επιτυγχάνεται με κόστος Θ(n log n)

bull Άλλοι αλγόριθμοι για το κυρτό περίβλημαndash Σάρωση του Graham DCHull

Επίσης σε Θ(n log n)

29

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Δυαδική Αναζήτηση

Πολύ αποδοτικός αλγόριθμος για αναζήτηση σε ταξινομημένο πίνακα

K

vs

A[0] A[m] A[n-1]

Αν K = A[m] σταμάτησε (επιτυχημένη αναζήτηση Διαφορετικά συνέχισε την αναζήτηση με όμοιο τρόπο στον πίνακα A[0m-1] αν K lt A[m] ή στον A[m+1n-1] αν K gt A[m]

l 0 r n-1

while l r do

m (l+r)2

if K = A[m] return m

else if K lt A[m] r m-1

else l m+1

return -1

30

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Ανάλυση Δυαδικής Αναζήτησης

bull Χρονική αποδοτικότηταndash Χειρότερη περίπτωση Cw (n) = 1 + Cw( n2 ) Cw (1) = 1

ndash Λύση Cw(n) = log2(n+1)

Αυτό είναι πολύ γρήγορο πχ Cw(106) = 20

bull Βέλτιστη μέθοδος για αναζήτηση σε ταξινομημένο πίνακα

bull Περιορισμοί η είσοδος πρέπει να είναι ταξινομημένη και στη μορφή πίνακα όχι πχ συνδεδεμένη λίστα

bull ΟΧΙ καλό παράδειγμα τεχνικής laquoδιαίρει και βασίλευεraquo

bull Υπάρχει ανάλογη τεχνική για τη συνεχή περίπτωση

31

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

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

Τα δυαδικά δένδρα έχουν έτοιμη τη δομή για αλγορίθμους διαίρει και βασίλευε

Πχ κλασικές διασχίσεις (προμεταενδο-διατεταγμένη)

Algorithm Inorder(T)

if T

Inorder(Tleft)

print(root of T)

Inorder(Tright)

ΑποδοτικότηταΘ(n)

32

a

b c

d e

a

b c

d e

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αλγόριθμοι Δυαδικών Δένδρων (2)

33

Άλλο παράδειγμα υπολογισμός ύψους

bull h(T) = maxh(TL) h(TR) + 1 if T and h() = -1

bull Αποδοτικότητα Θ(n)

TL TR

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Σημείωμα Αναφοράς

Copyright Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Ιωάννης Μανωλόπουλος Αναστάσιος Γούναρης laquoΑλγόριθμοι raquo Έκδοση 10 Θεσσαλονίκη 2015 Διαθέσιμο από τη δικτυακή διεύθυνσηhttpeclassauthgrcoursesOCRS417

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons Αναφορά -Μη Εμπορική Χρήση - Παρόμοια Διανομή 40 [1] ή μεταγενέστερη Διεθνής Έκδοση Εξαιρούνται τα αυτοτελή έργα τρίτων πχ φωτογραφίες διαγράμματα κλπ τα οποία εμπεριέχονται σε αυτό και τα οποία αναφέρονται μαζί με τους όρους χρήσης τους στο laquoΣημείωμα Χρήσης Έργων Τρίτωνraquo

Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο

για εμπορική χρήση εφόσον αυτό του ζητηθεί

Ως Μη Εμπορική ορίζεται η χρήση

bull που δεν περιλαμβάνει άμεσο ή έμμεσο οικονομικό όφελος από την χρήση του έργου για το διανομέα του έργου και αδειοδόχο

bull που δεν περιλαμβάνει οικονομική συναλλαγή ως προϋπόθεση για τη χρήση ή πρόσβαση στο έργο

bull που δεν προσπορίζει στο διανομέα του έργου και αδειοδόχο έμμεσο οικονομικό όφελος (πχ διαφημίσεις) από την προβολή του έργου σε διαδικτυακό τόπο

[1] httpcreativecommonsorglicensesby-nc-sa40

Σημείωμα Αδειοδότησης

ΑΡΙΣΤΟΤΕΛΕΙΟ

ΠΑΝΕΠΙΣΤΗΜΙΟ

ΘΕΣΣΑΛΟΝΙΚΗΣ

ΑΝΟΙΚΤΑ

ΑΚΑΔΗΜΑΪΚΑ

ΜΑΘΗΜΑΤΑ

Τέλος ενότητας

Επεξεργασία Ανδρέας ΚοσματόπουλοςΘεσσαλονίκη Αύγουστος 2015

ΑΡΙΣΤΟΤΕΛΕΙΟ

ΠΑΝΕΠΙΣΤΗΜΙΟ

ΘΕΣΣΑΛΟΝΙΚΗΣ

Σημειώματα

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Σημείωμα Ιστορικού Εκδόσεων Έργου

Το παρόν έργο αποτελεί την έκδοση 100

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Διατήρηση Σημειωμάτων

Οποιαδήποτε αναπαραγωγή ή διασκευή του υλικού θα πρέπει να συμπεριλαμβάνει

το Σημείωμα Αναφοράς

το Σημείωμα Αδειοδότησης

τη δήλωση Διατήρησης Σημειωμάτων

το Σημείωμα Χρήσης Έργων Τρίτων (εφόσον υπάρχει)

μαζί με τους συνοδευόμενους υπερσυνδέσμους

Page 13: ΑΛΟΡΙΘΜΟΙ · 2015. 9. 9. · Αλγόριθμος QuickHull (2) •πολογισμός του κυρτού (επάνω)περιβλήματος για το S 1 –ρίσκουμε

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αποδοτικότητα της ταξινόμησης με συγχώνευση

bull C(n) = 2 C(n2) + Cmerge(n) for ngt1 C(1)=0

bull Όλες οι περιπτώσεις έχουν την ίδια αποδοτικότητα Θ(n log n)

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

ndash log n asymp n lg n - 144 n

bull Απαιτήσεις χώρου Θ(n) (δεν είναι in-place)

bull Μπορεί να υλοποιηθεί χωρίς αναδρομή (bottom-up)

13

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Γρήγορη Ταξινόμηση (1)

bull Επιλέγουμε ένα αξονικό στοιχείο ως άξονα (το στοιχείο της διαμέρισης)

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

bull Ανταλλάσουμε τον άξονα με το τελευταίο στοιχείο της πρώτης λίστας (δηλαδή τη λίστα le ) οπότε ο άξονας λαμβάνει την τελική του θέση

bull Ταξινομούμε τις δύο λίστες

14

p

A[i]lep A[i]gtp

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Γρήγορη Ταξινόμηση (2)

Algorithm Quicksort(A[lr]) Input an array A[0n-1] of orderable

elements

Output Array A[0n-1] sorted ascendingly

if lltr

s partition(A[lr])

quicksort(A[ls-1])

quicksort(A[s+1r])

15

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Γρήγορη Ταξινόμηση (3)

Algorithm Partition(A[lr]) Partitions a subarray by using its first

element as pivot Input a subarray A[lr] lltr Output A partition of A[lr] with the

split position returned as this functionrsquos value

pA[l] il jr+1repeat

repeat ii+1 until A[i]geprepeat jj-1 until A[j]lepswap(A[i]A[j])

until igejswap(A[i]A[j]) εξουδετέρωση αλλαγής όταν

igejswap(A[l]A[j])return j

16

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Γρήγορη Ταξινόμηση (4)

Παράδειγμα

5 3 1 9 8 2 4 7

Ποιά είναι η σειρά των κλήσεων συναρτήσεων

17

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Γρήγορη Ταξινόμηση (5)

bull Καλύτερη περίπτωση χωρισμός στη μέση mdash Θ(n log n)

bull Χειρότερη περίπτωση ταξινομημένος πίνακας mdash Θ(n2)

bull Μέση περίπτωση τυχαίος πίνακας mdash Θ(n log n)

bull Βελτιώσεις

ndash Καλύτερη επιλογή του άξονα το μεσαίο από 3 στοιχεία αποφεύγει τη χειρότερη περίπτωση σε ταξινομημένα αρχεία

ndash Γυρνούμε σε ταξινόμηση με εισαγωγή για μικρά υποαρχεία

ndash Αποφεύγουμε την αναδρομή

Μπορούν να δώσουν βελτίωση μέχρι 20-25

bull Θεωρείται η καλύτερη μέθοδος για εσωτερική ταξινόμηση μεγάλων αρχείων (n ge 10000)

18

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Πολλαπλασιασμός μεγάλων ακεραίων (1)

bull Για να πολλαπλασιάσουμε δύο ακεραίους με n1 και n2 ψηφία με το χέρι θα εκτελέσουμε n1n2 πράξεις πολλαπλασιασμού

bull Πρόβλημα όταν έχουμε πολλά ψηφία

ndash A = 12345678901357986429 B = 87654321284820912836

bull Ας δούμε ένα απλούστερο παράδειγμα 2314

- Όμως 23 = 2101+3100 14 = 1101+4100

- Άρα 2314 = (21)102 +(24+31)101 + (34) 100

bull Αν A = 2135 B = 4014

ΑΒ= (21 middot102 + 35) (40 middot102 + 14)

= 21 40 middot104 + (21 14 + 35 40) middot102 + 35 14

19

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Πολλαπλασιασμός μεγάλων ακεραίων (2)

bull Βασική παρατήρηση

α) 2314 = (21)102 +(24+31)101 + (34) 100

= (21)102 +[(2+3)(1+4)-21-34]101 + (34) 100

bull β) 2135 4014 = 21 40 middot104 + (21 14 + 35 40) middot102 + 35 14

= 21 40 middot104 + [(21+35) (40+14) ndash 2140-3514] middot102 + 35 14

bull Γενικώς a=a1a0 b=b1b0 και ζητείται c=ab c = ab = c210n + c1

10n2

+ c0100 όπου c2=a1b1 c0=a0b0 c1=(a1+a0)(b1+b0)-(c2+c0)

bull Αναδρομική εξίσωση M(n) = 3M(n2) M(1) = 1

bull Αποδοτικότητα M(n) = 3log 2n = nlog 23 asymp n1585

20

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Πολλαπλασιασμός πινάκων αλά Strassen

bull Ο Strassen παρατήρησε [1969] ότι το γινόμενο δύο πινάκων A και B (μεγέθους2nx2n) μπορεί να υπολογισθεί ως εξής

C00 1198620111986210 11986211

=A00 1198600111986010 11986011

lowastB00 1198610111986110 11986111

1198721+1198724minus1198725+1198727 1198723+1198725

1198722+1198724 1198721+1198723minus1198722+1198726

21

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Υποπίνακες του Strassen

bull M1 = (A00 + A11) (B00 + B11)

bull M2 = (A10 + A11) B00

bull M3 = A00 (B01 - B11)

bull M4 = A11 (B10 - B00)

bull M5 = (A00 + A01) B11

bull M6 = (A10 - A00) (B00 + B01)

bull M7 = (A01 - A11) (B10 + B11)

22

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αποδοτικότητα του αλγορίθμου Strassen

bull Αν το n δεν είναι δύναμη του 2 τότε οι πίνακες παραγεμίζονται με μηδενικά

bull Πλήθος πολλαπλασιασμών

bull Πλήθος προσθέσεων

bull Αναδρομή

bull Άλλοι αλγόριθμοι έχουν βελτιώσει αυτό το αποτέλεσμα αλλά είναι ακόμη περισσότεροι σύνθετοι

23

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Το πρόβλημα του πλησιέστερου ζεύγους

bull Πρόβλημα βρες τα πλησιέστερα σημεία μεταξύ n σημείων σε ένα k-διάστατο χώρο

bull Υποθέτουμε ότι τα σημεία ταξινομούνται με βάση τις τιμές των τετμημένων x

bull Διαιρούμε τα σημεία σε δύο υποσύνολα S1 και S2 με n2 σημεία με βάση μία κατακόρυφη γραμμή στο x=c

bull Επιλέγουμε το πλησιέστερο ζεύγος μεταξύ των ζευγών του αριστερού υποσυνόλου (απόσταση d1) μεταξύ των ζευγών του δεξιού υποσυνόλου (απόσταση d2) και το πλησιέστερο ζεύγος με σημεία και από τις δύο πλευρές

bull Πρέπει να εξετάσουμε μία λωρίδα πλάτους 2d όπουd=min[d1d2]

24

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Το πρόβλημα του πλησιέστερου ζεύγους (2)

bull Γεωμετρική εξήγηση

bull Αναδρομή T(n) = 2T(n2) + M(n)

bull Αποδοτικότητα O(n logn)

bull Βελτιστότητα

25

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αλγόριθμος QuickHull

Υπολογίζει το Κυρτό Περίβλημα με έμπνευση από τη Γρήγορη Ταξινόμηση

bull Υποθέτουμε ότι τα σημεία είναι ταξινομημένα ως προς την συντεταγμένη x

bull Προσδιορίζουμε δύο ακραία σημαία P1 και P2 (μέρη του περιβλήματος)

bull Το σύνολο σημείων S διαιρείται σε δύο υποσύνολα S1 και S2

bull Υπολογίζουμε το κυρτό περίβλημα για το S1

bull Ομοίως υπολογίζουμε το κυρτό περίβλημα για το S1

26

P1

P2

Pmax

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αλγόριθμος QuickHull (2)

bull Υπολογισμός του κυρτού (επάνω) περιβλήματος για το S1

ndashΒρίσκουμε το πιο απομακρυσμένο σημείο Pmax από τη γραμμή P1P2

ndash Υπολογίζουμε το περίβλημα για τα σημεία αριστερά της γραμμής P1Pmax

ndash Υπολογίζουμε το περίβλημα για τα σημεία αριστερά της γραμμής PmaxP2

bull Εύρεση του σημείου Pmax

ndash Το Pmax μεγιστοποιεί την επιφάνεια του τριγώνου PmaxP1P2

ndash Σε περίπτωση ισοπαλίας επιλέγεται το Pmax που μεγιστοποιεί τη γωνία PmaxP1P2

bull Τα σημεία μέσα στο τρίγωνο PmaxP1P2 αγνοούνται εφεξής

bull Πως θα βρεθεί γεωμετρικά το σημείο Pmax και τα σημεία στα αριστερά της γραμμής P1Pmax

27

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αλγόριθμος QuickHull (3)

28

bull Πως θα βρεθεί γεωμετρικά το σημείο Pmax και τα σημεία στα αριστερά της γραμμής P1Pmax

ndash Δίνονται τα σημεία P1(x1y1) P2(x2y2) Pmax(xmaxymax)

ndash Το εμβαδόν του τριγώνου είναι μισό του μεγέθους της ορίζουσας

1199091 1199101 11199092 1199102 1119909119898119886119909 119910119898119886119909 1

= x1y2+xmaxy1+x2ymaxndashxmaxy2ndashx2y1-x1ymax

ndash Το πρόσημο της έκφρασης είναι θετικό αν και μόνο αν το σημείο Pmax

είναι στα αριστερά της γραμμής P1P2

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αποδοτικότητα Αλγορίθμου QuickHull (4)

bull Η εύρεση του πλέον απομακρυσμένου σημείου από την ευθεία P1P2 μπορεί να βρεθεί σε γραμμικό χρόνο

bull Έτσι προκύπτει η ίδια πολυπλοκότητα με τη γρήγορη ταξινόμησηndash Χειρότερη περίπτωση Θ(n2)

ndash Μέση περίπτωση Θ(n log n)

bull Αν τα σημεία δεν είναι αρχικά ταξινομημένα στον άξονα x αυτό επιτυγχάνεται με κόστος Θ(n log n)

bull Άλλοι αλγόριθμοι για το κυρτό περίβλημαndash Σάρωση του Graham DCHull

Επίσης σε Θ(n log n)

29

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Δυαδική Αναζήτηση

Πολύ αποδοτικός αλγόριθμος για αναζήτηση σε ταξινομημένο πίνακα

K

vs

A[0] A[m] A[n-1]

Αν K = A[m] σταμάτησε (επιτυχημένη αναζήτηση Διαφορετικά συνέχισε την αναζήτηση με όμοιο τρόπο στον πίνακα A[0m-1] αν K lt A[m] ή στον A[m+1n-1] αν K gt A[m]

l 0 r n-1

while l r do

m (l+r)2

if K = A[m] return m

else if K lt A[m] r m-1

else l m+1

return -1

30

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Ανάλυση Δυαδικής Αναζήτησης

bull Χρονική αποδοτικότηταndash Χειρότερη περίπτωση Cw (n) = 1 + Cw( n2 ) Cw (1) = 1

ndash Λύση Cw(n) = log2(n+1)

Αυτό είναι πολύ γρήγορο πχ Cw(106) = 20

bull Βέλτιστη μέθοδος για αναζήτηση σε ταξινομημένο πίνακα

bull Περιορισμοί η είσοδος πρέπει να είναι ταξινομημένη και στη μορφή πίνακα όχι πχ συνδεδεμένη λίστα

bull ΟΧΙ καλό παράδειγμα τεχνικής laquoδιαίρει και βασίλευεraquo

bull Υπάρχει ανάλογη τεχνική για τη συνεχή περίπτωση

31

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

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

Τα δυαδικά δένδρα έχουν έτοιμη τη δομή για αλγορίθμους διαίρει και βασίλευε

Πχ κλασικές διασχίσεις (προμεταενδο-διατεταγμένη)

Algorithm Inorder(T)

if T

Inorder(Tleft)

print(root of T)

Inorder(Tright)

ΑποδοτικότηταΘ(n)

32

a

b c

d e

a

b c

d e

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αλγόριθμοι Δυαδικών Δένδρων (2)

33

Άλλο παράδειγμα υπολογισμός ύψους

bull h(T) = maxh(TL) h(TR) + 1 if T and h() = -1

bull Αποδοτικότητα Θ(n)

TL TR

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Σημείωμα Αναφοράς

Copyright Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Ιωάννης Μανωλόπουλος Αναστάσιος Γούναρης laquoΑλγόριθμοι raquo Έκδοση 10 Θεσσαλονίκη 2015 Διαθέσιμο από τη δικτυακή διεύθυνσηhttpeclassauthgrcoursesOCRS417

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons Αναφορά -Μη Εμπορική Χρήση - Παρόμοια Διανομή 40 [1] ή μεταγενέστερη Διεθνής Έκδοση Εξαιρούνται τα αυτοτελή έργα τρίτων πχ φωτογραφίες διαγράμματα κλπ τα οποία εμπεριέχονται σε αυτό και τα οποία αναφέρονται μαζί με τους όρους χρήσης τους στο laquoΣημείωμα Χρήσης Έργων Τρίτωνraquo

Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο

για εμπορική χρήση εφόσον αυτό του ζητηθεί

Ως Μη Εμπορική ορίζεται η χρήση

bull που δεν περιλαμβάνει άμεσο ή έμμεσο οικονομικό όφελος από την χρήση του έργου για το διανομέα του έργου και αδειοδόχο

bull που δεν περιλαμβάνει οικονομική συναλλαγή ως προϋπόθεση για τη χρήση ή πρόσβαση στο έργο

bull που δεν προσπορίζει στο διανομέα του έργου και αδειοδόχο έμμεσο οικονομικό όφελος (πχ διαφημίσεις) από την προβολή του έργου σε διαδικτυακό τόπο

[1] httpcreativecommonsorglicensesby-nc-sa40

Σημείωμα Αδειοδότησης

ΑΡΙΣΤΟΤΕΛΕΙΟ

ΠΑΝΕΠΙΣΤΗΜΙΟ

ΘΕΣΣΑΛΟΝΙΚΗΣ

ΑΝΟΙΚΤΑ

ΑΚΑΔΗΜΑΪΚΑ

ΜΑΘΗΜΑΤΑ

Τέλος ενότητας

Επεξεργασία Ανδρέας ΚοσματόπουλοςΘεσσαλονίκη Αύγουστος 2015

ΑΡΙΣΤΟΤΕΛΕΙΟ

ΠΑΝΕΠΙΣΤΗΜΙΟ

ΘΕΣΣΑΛΟΝΙΚΗΣ

Σημειώματα

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Σημείωμα Ιστορικού Εκδόσεων Έργου

Το παρόν έργο αποτελεί την έκδοση 100

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Διατήρηση Σημειωμάτων

Οποιαδήποτε αναπαραγωγή ή διασκευή του υλικού θα πρέπει να συμπεριλαμβάνει

το Σημείωμα Αναφοράς

το Σημείωμα Αδειοδότησης

τη δήλωση Διατήρησης Σημειωμάτων

το Σημείωμα Χρήσης Έργων Τρίτων (εφόσον υπάρχει)

μαζί με τους συνοδευόμενους υπερσυνδέσμους

Page 14: ΑΛΟΡΙΘΜΟΙ · 2015. 9. 9. · Αλγόριθμος QuickHull (2) •πολογισμός του κυρτού (επάνω)περιβλήματος για το S 1 –ρίσκουμε

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Γρήγορη Ταξινόμηση (1)

bull Επιλέγουμε ένα αξονικό στοιχείο ως άξονα (το στοιχείο της διαμέρισης)

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

bull Ανταλλάσουμε τον άξονα με το τελευταίο στοιχείο της πρώτης λίστας (δηλαδή τη λίστα le ) οπότε ο άξονας λαμβάνει την τελική του θέση

bull Ταξινομούμε τις δύο λίστες

14

p

A[i]lep A[i]gtp

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Γρήγορη Ταξινόμηση (2)

Algorithm Quicksort(A[lr]) Input an array A[0n-1] of orderable

elements

Output Array A[0n-1] sorted ascendingly

if lltr

s partition(A[lr])

quicksort(A[ls-1])

quicksort(A[s+1r])

15

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Γρήγορη Ταξινόμηση (3)

Algorithm Partition(A[lr]) Partitions a subarray by using its first

element as pivot Input a subarray A[lr] lltr Output A partition of A[lr] with the

split position returned as this functionrsquos value

pA[l] il jr+1repeat

repeat ii+1 until A[i]geprepeat jj-1 until A[j]lepswap(A[i]A[j])

until igejswap(A[i]A[j]) εξουδετέρωση αλλαγής όταν

igejswap(A[l]A[j])return j

16

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Γρήγορη Ταξινόμηση (4)

Παράδειγμα

5 3 1 9 8 2 4 7

Ποιά είναι η σειρά των κλήσεων συναρτήσεων

17

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Γρήγορη Ταξινόμηση (5)

bull Καλύτερη περίπτωση χωρισμός στη μέση mdash Θ(n log n)

bull Χειρότερη περίπτωση ταξινομημένος πίνακας mdash Θ(n2)

bull Μέση περίπτωση τυχαίος πίνακας mdash Θ(n log n)

bull Βελτιώσεις

ndash Καλύτερη επιλογή του άξονα το μεσαίο από 3 στοιχεία αποφεύγει τη χειρότερη περίπτωση σε ταξινομημένα αρχεία

ndash Γυρνούμε σε ταξινόμηση με εισαγωγή για μικρά υποαρχεία

ndash Αποφεύγουμε την αναδρομή

Μπορούν να δώσουν βελτίωση μέχρι 20-25

bull Θεωρείται η καλύτερη μέθοδος για εσωτερική ταξινόμηση μεγάλων αρχείων (n ge 10000)

18

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Πολλαπλασιασμός μεγάλων ακεραίων (1)

bull Για να πολλαπλασιάσουμε δύο ακεραίους με n1 και n2 ψηφία με το χέρι θα εκτελέσουμε n1n2 πράξεις πολλαπλασιασμού

bull Πρόβλημα όταν έχουμε πολλά ψηφία

ndash A = 12345678901357986429 B = 87654321284820912836

bull Ας δούμε ένα απλούστερο παράδειγμα 2314

- Όμως 23 = 2101+3100 14 = 1101+4100

- Άρα 2314 = (21)102 +(24+31)101 + (34) 100

bull Αν A = 2135 B = 4014

ΑΒ= (21 middot102 + 35) (40 middot102 + 14)

= 21 40 middot104 + (21 14 + 35 40) middot102 + 35 14

19

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Πολλαπλασιασμός μεγάλων ακεραίων (2)

bull Βασική παρατήρηση

α) 2314 = (21)102 +(24+31)101 + (34) 100

= (21)102 +[(2+3)(1+4)-21-34]101 + (34) 100

bull β) 2135 4014 = 21 40 middot104 + (21 14 + 35 40) middot102 + 35 14

= 21 40 middot104 + [(21+35) (40+14) ndash 2140-3514] middot102 + 35 14

bull Γενικώς a=a1a0 b=b1b0 και ζητείται c=ab c = ab = c210n + c1

10n2

+ c0100 όπου c2=a1b1 c0=a0b0 c1=(a1+a0)(b1+b0)-(c2+c0)

bull Αναδρομική εξίσωση M(n) = 3M(n2) M(1) = 1

bull Αποδοτικότητα M(n) = 3log 2n = nlog 23 asymp n1585

20

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Πολλαπλασιασμός πινάκων αλά Strassen

bull Ο Strassen παρατήρησε [1969] ότι το γινόμενο δύο πινάκων A και B (μεγέθους2nx2n) μπορεί να υπολογισθεί ως εξής

C00 1198620111986210 11986211

=A00 1198600111986010 11986011

lowastB00 1198610111986110 11986111

1198721+1198724minus1198725+1198727 1198723+1198725

1198722+1198724 1198721+1198723minus1198722+1198726

21

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Υποπίνακες του Strassen

bull M1 = (A00 + A11) (B00 + B11)

bull M2 = (A10 + A11) B00

bull M3 = A00 (B01 - B11)

bull M4 = A11 (B10 - B00)

bull M5 = (A00 + A01) B11

bull M6 = (A10 - A00) (B00 + B01)

bull M7 = (A01 - A11) (B10 + B11)

22

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αποδοτικότητα του αλγορίθμου Strassen

bull Αν το n δεν είναι δύναμη του 2 τότε οι πίνακες παραγεμίζονται με μηδενικά

bull Πλήθος πολλαπλασιασμών

bull Πλήθος προσθέσεων

bull Αναδρομή

bull Άλλοι αλγόριθμοι έχουν βελτιώσει αυτό το αποτέλεσμα αλλά είναι ακόμη περισσότεροι σύνθετοι

23

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Το πρόβλημα του πλησιέστερου ζεύγους

bull Πρόβλημα βρες τα πλησιέστερα σημεία μεταξύ n σημείων σε ένα k-διάστατο χώρο

bull Υποθέτουμε ότι τα σημεία ταξινομούνται με βάση τις τιμές των τετμημένων x

bull Διαιρούμε τα σημεία σε δύο υποσύνολα S1 και S2 με n2 σημεία με βάση μία κατακόρυφη γραμμή στο x=c

bull Επιλέγουμε το πλησιέστερο ζεύγος μεταξύ των ζευγών του αριστερού υποσυνόλου (απόσταση d1) μεταξύ των ζευγών του δεξιού υποσυνόλου (απόσταση d2) και το πλησιέστερο ζεύγος με σημεία και από τις δύο πλευρές

bull Πρέπει να εξετάσουμε μία λωρίδα πλάτους 2d όπουd=min[d1d2]

24

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Το πρόβλημα του πλησιέστερου ζεύγους (2)

bull Γεωμετρική εξήγηση

bull Αναδρομή T(n) = 2T(n2) + M(n)

bull Αποδοτικότητα O(n logn)

bull Βελτιστότητα

25

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αλγόριθμος QuickHull

Υπολογίζει το Κυρτό Περίβλημα με έμπνευση από τη Γρήγορη Ταξινόμηση

bull Υποθέτουμε ότι τα σημεία είναι ταξινομημένα ως προς την συντεταγμένη x

bull Προσδιορίζουμε δύο ακραία σημαία P1 και P2 (μέρη του περιβλήματος)

bull Το σύνολο σημείων S διαιρείται σε δύο υποσύνολα S1 και S2

bull Υπολογίζουμε το κυρτό περίβλημα για το S1

bull Ομοίως υπολογίζουμε το κυρτό περίβλημα για το S1

26

P1

P2

Pmax

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αλγόριθμος QuickHull (2)

bull Υπολογισμός του κυρτού (επάνω) περιβλήματος για το S1

ndashΒρίσκουμε το πιο απομακρυσμένο σημείο Pmax από τη γραμμή P1P2

ndash Υπολογίζουμε το περίβλημα για τα σημεία αριστερά της γραμμής P1Pmax

ndash Υπολογίζουμε το περίβλημα για τα σημεία αριστερά της γραμμής PmaxP2

bull Εύρεση του σημείου Pmax

ndash Το Pmax μεγιστοποιεί την επιφάνεια του τριγώνου PmaxP1P2

ndash Σε περίπτωση ισοπαλίας επιλέγεται το Pmax που μεγιστοποιεί τη γωνία PmaxP1P2

bull Τα σημεία μέσα στο τρίγωνο PmaxP1P2 αγνοούνται εφεξής

bull Πως θα βρεθεί γεωμετρικά το σημείο Pmax και τα σημεία στα αριστερά της γραμμής P1Pmax

27

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αλγόριθμος QuickHull (3)

28

bull Πως θα βρεθεί γεωμετρικά το σημείο Pmax και τα σημεία στα αριστερά της γραμμής P1Pmax

ndash Δίνονται τα σημεία P1(x1y1) P2(x2y2) Pmax(xmaxymax)

ndash Το εμβαδόν του τριγώνου είναι μισό του μεγέθους της ορίζουσας

1199091 1199101 11199092 1199102 1119909119898119886119909 119910119898119886119909 1

= x1y2+xmaxy1+x2ymaxndashxmaxy2ndashx2y1-x1ymax

ndash Το πρόσημο της έκφρασης είναι θετικό αν και μόνο αν το σημείο Pmax

είναι στα αριστερά της γραμμής P1P2

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αποδοτικότητα Αλγορίθμου QuickHull (4)

bull Η εύρεση του πλέον απομακρυσμένου σημείου από την ευθεία P1P2 μπορεί να βρεθεί σε γραμμικό χρόνο

bull Έτσι προκύπτει η ίδια πολυπλοκότητα με τη γρήγορη ταξινόμησηndash Χειρότερη περίπτωση Θ(n2)

ndash Μέση περίπτωση Θ(n log n)

bull Αν τα σημεία δεν είναι αρχικά ταξινομημένα στον άξονα x αυτό επιτυγχάνεται με κόστος Θ(n log n)

bull Άλλοι αλγόριθμοι για το κυρτό περίβλημαndash Σάρωση του Graham DCHull

Επίσης σε Θ(n log n)

29

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Δυαδική Αναζήτηση

Πολύ αποδοτικός αλγόριθμος για αναζήτηση σε ταξινομημένο πίνακα

K

vs

A[0] A[m] A[n-1]

Αν K = A[m] σταμάτησε (επιτυχημένη αναζήτηση Διαφορετικά συνέχισε την αναζήτηση με όμοιο τρόπο στον πίνακα A[0m-1] αν K lt A[m] ή στον A[m+1n-1] αν K gt A[m]

l 0 r n-1

while l r do

m (l+r)2

if K = A[m] return m

else if K lt A[m] r m-1

else l m+1

return -1

30

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Ανάλυση Δυαδικής Αναζήτησης

bull Χρονική αποδοτικότηταndash Χειρότερη περίπτωση Cw (n) = 1 + Cw( n2 ) Cw (1) = 1

ndash Λύση Cw(n) = log2(n+1)

Αυτό είναι πολύ γρήγορο πχ Cw(106) = 20

bull Βέλτιστη μέθοδος για αναζήτηση σε ταξινομημένο πίνακα

bull Περιορισμοί η είσοδος πρέπει να είναι ταξινομημένη και στη μορφή πίνακα όχι πχ συνδεδεμένη λίστα

bull ΟΧΙ καλό παράδειγμα τεχνικής laquoδιαίρει και βασίλευεraquo

bull Υπάρχει ανάλογη τεχνική για τη συνεχή περίπτωση

31

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

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

Τα δυαδικά δένδρα έχουν έτοιμη τη δομή για αλγορίθμους διαίρει και βασίλευε

Πχ κλασικές διασχίσεις (προμεταενδο-διατεταγμένη)

Algorithm Inorder(T)

if T

Inorder(Tleft)

print(root of T)

Inorder(Tright)

ΑποδοτικότηταΘ(n)

32

a

b c

d e

a

b c

d e

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αλγόριθμοι Δυαδικών Δένδρων (2)

33

Άλλο παράδειγμα υπολογισμός ύψους

bull h(T) = maxh(TL) h(TR) + 1 if T and h() = -1

bull Αποδοτικότητα Θ(n)

TL TR

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Σημείωμα Αναφοράς

Copyright Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Ιωάννης Μανωλόπουλος Αναστάσιος Γούναρης laquoΑλγόριθμοι raquo Έκδοση 10 Θεσσαλονίκη 2015 Διαθέσιμο από τη δικτυακή διεύθυνσηhttpeclassauthgrcoursesOCRS417

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons Αναφορά -Μη Εμπορική Χρήση - Παρόμοια Διανομή 40 [1] ή μεταγενέστερη Διεθνής Έκδοση Εξαιρούνται τα αυτοτελή έργα τρίτων πχ φωτογραφίες διαγράμματα κλπ τα οποία εμπεριέχονται σε αυτό και τα οποία αναφέρονται μαζί με τους όρους χρήσης τους στο laquoΣημείωμα Χρήσης Έργων Τρίτωνraquo

Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο

για εμπορική χρήση εφόσον αυτό του ζητηθεί

Ως Μη Εμπορική ορίζεται η χρήση

bull που δεν περιλαμβάνει άμεσο ή έμμεσο οικονομικό όφελος από την χρήση του έργου για το διανομέα του έργου και αδειοδόχο

bull που δεν περιλαμβάνει οικονομική συναλλαγή ως προϋπόθεση για τη χρήση ή πρόσβαση στο έργο

bull που δεν προσπορίζει στο διανομέα του έργου και αδειοδόχο έμμεσο οικονομικό όφελος (πχ διαφημίσεις) από την προβολή του έργου σε διαδικτυακό τόπο

[1] httpcreativecommonsorglicensesby-nc-sa40

Σημείωμα Αδειοδότησης

ΑΡΙΣΤΟΤΕΛΕΙΟ

ΠΑΝΕΠΙΣΤΗΜΙΟ

ΘΕΣΣΑΛΟΝΙΚΗΣ

ΑΝΟΙΚΤΑ

ΑΚΑΔΗΜΑΪΚΑ

ΜΑΘΗΜΑΤΑ

Τέλος ενότητας

Επεξεργασία Ανδρέας ΚοσματόπουλοςΘεσσαλονίκη Αύγουστος 2015

ΑΡΙΣΤΟΤΕΛΕΙΟ

ΠΑΝΕΠΙΣΤΗΜΙΟ

ΘΕΣΣΑΛΟΝΙΚΗΣ

Σημειώματα

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Σημείωμα Ιστορικού Εκδόσεων Έργου

Το παρόν έργο αποτελεί την έκδοση 100

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Διατήρηση Σημειωμάτων

Οποιαδήποτε αναπαραγωγή ή διασκευή του υλικού θα πρέπει να συμπεριλαμβάνει

το Σημείωμα Αναφοράς

το Σημείωμα Αδειοδότησης

τη δήλωση Διατήρησης Σημειωμάτων

το Σημείωμα Χρήσης Έργων Τρίτων (εφόσον υπάρχει)

μαζί με τους συνοδευόμενους υπερσυνδέσμους

Page 15: ΑΛΟΡΙΘΜΟΙ · 2015. 9. 9. · Αλγόριθμος QuickHull (2) •πολογισμός του κυρτού (επάνω)περιβλήματος για το S 1 –ρίσκουμε

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Γρήγορη Ταξινόμηση (2)

Algorithm Quicksort(A[lr]) Input an array A[0n-1] of orderable

elements

Output Array A[0n-1] sorted ascendingly

if lltr

s partition(A[lr])

quicksort(A[ls-1])

quicksort(A[s+1r])

15

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Γρήγορη Ταξινόμηση (3)

Algorithm Partition(A[lr]) Partitions a subarray by using its first

element as pivot Input a subarray A[lr] lltr Output A partition of A[lr] with the

split position returned as this functionrsquos value

pA[l] il jr+1repeat

repeat ii+1 until A[i]geprepeat jj-1 until A[j]lepswap(A[i]A[j])

until igejswap(A[i]A[j]) εξουδετέρωση αλλαγής όταν

igejswap(A[l]A[j])return j

16

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Γρήγορη Ταξινόμηση (4)

Παράδειγμα

5 3 1 9 8 2 4 7

Ποιά είναι η σειρά των κλήσεων συναρτήσεων

17

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Γρήγορη Ταξινόμηση (5)

bull Καλύτερη περίπτωση χωρισμός στη μέση mdash Θ(n log n)

bull Χειρότερη περίπτωση ταξινομημένος πίνακας mdash Θ(n2)

bull Μέση περίπτωση τυχαίος πίνακας mdash Θ(n log n)

bull Βελτιώσεις

ndash Καλύτερη επιλογή του άξονα το μεσαίο από 3 στοιχεία αποφεύγει τη χειρότερη περίπτωση σε ταξινομημένα αρχεία

ndash Γυρνούμε σε ταξινόμηση με εισαγωγή για μικρά υποαρχεία

ndash Αποφεύγουμε την αναδρομή

Μπορούν να δώσουν βελτίωση μέχρι 20-25

bull Θεωρείται η καλύτερη μέθοδος για εσωτερική ταξινόμηση μεγάλων αρχείων (n ge 10000)

18

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Πολλαπλασιασμός μεγάλων ακεραίων (1)

bull Για να πολλαπλασιάσουμε δύο ακεραίους με n1 και n2 ψηφία με το χέρι θα εκτελέσουμε n1n2 πράξεις πολλαπλασιασμού

bull Πρόβλημα όταν έχουμε πολλά ψηφία

ndash A = 12345678901357986429 B = 87654321284820912836

bull Ας δούμε ένα απλούστερο παράδειγμα 2314

- Όμως 23 = 2101+3100 14 = 1101+4100

- Άρα 2314 = (21)102 +(24+31)101 + (34) 100

bull Αν A = 2135 B = 4014

ΑΒ= (21 middot102 + 35) (40 middot102 + 14)

= 21 40 middot104 + (21 14 + 35 40) middot102 + 35 14

19

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Πολλαπλασιασμός μεγάλων ακεραίων (2)

bull Βασική παρατήρηση

α) 2314 = (21)102 +(24+31)101 + (34) 100

= (21)102 +[(2+3)(1+4)-21-34]101 + (34) 100

bull β) 2135 4014 = 21 40 middot104 + (21 14 + 35 40) middot102 + 35 14

= 21 40 middot104 + [(21+35) (40+14) ndash 2140-3514] middot102 + 35 14

bull Γενικώς a=a1a0 b=b1b0 και ζητείται c=ab c = ab = c210n + c1

10n2

+ c0100 όπου c2=a1b1 c0=a0b0 c1=(a1+a0)(b1+b0)-(c2+c0)

bull Αναδρομική εξίσωση M(n) = 3M(n2) M(1) = 1

bull Αποδοτικότητα M(n) = 3log 2n = nlog 23 asymp n1585

20

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Πολλαπλασιασμός πινάκων αλά Strassen

bull Ο Strassen παρατήρησε [1969] ότι το γινόμενο δύο πινάκων A και B (μεγέθους2nx2n) μπορεί να υπολογισθεί ως εξής

C00 1198620111986210 11986211

=A00 1198600111986010 11986011

lowastB00 1198610111986110 11986111

1198721+1198724minus1198725+1198727 1198723+1198725

1198722+1198724 1198721+1198723minus1198722+1198726

21

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Υποπίνακες του Strassen

bull M1 = (A00 + A11) (B00 + B11)

bull M2 = (A10 + A11) B00

bull M3 = A00 (B01 - B11)

bull M4 = A11 (B10 - B00)

bull M5 = (A00 + A01) B11

bull M6 = (A10 - A00) (B00 + B01)

bull M7 = (A01 - A11) (B10 + B11)

22

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αποδοτικότητα του αλγορίθμου Strassen

bull Αν το n δεν είναι δύναμη του 2 τότε οι πίνακες παραγεμίζονται με μηδενικά

bull Πλήθος πολλαπλασιασμών

bull Πλήθος προσθέσεων

bull Αναδρομή

bull Άλλοι αλγόριθμοι έχουν βελτιώσει αυτό το αποτέλεσμα αλλά είναι ακόμη περισσότεροι σύνθετοι

23

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Το πρόβλημα του πλησιέστερου ζεύγους

bull Πρόβλημα βρες τα πλησιέστερα σημεία μεταξύ n σημείων σε ένα k-διάστατο χώρο

bull Υποθέτουμε ότι τα σημεία ταξινομούνται με βάση τις τιμές των τετμημένων x

bull Διαιρούμε τα σημεία σε δύο υποσύνολα S1 και S2 με n2 σημεία με βάση μία κατακόρυφη γραμμή στο x=c

bull Επιλέγουμε το πλησιέστερο ζεύγος μεταξύ των ζευγών του αριστερού υποσυνόλου (απόσταση d1) μεταξύ των ζευγών του δεξιού υποσυνόλου (απόσταση d2) και το πλησιέστερο ζεύγος με σημεία και από τις δύο πλευρές

bull Πρέπει να εξετάσουμε μία λωρίδα πλάτους 2d όπουd=min[d1d2]

24

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Το πρόβλημα του πλησιέστερου ζεύγους (2)

bull Γεωμετρική εξήγηση

bull Αναδρομή T(n) = 2T(n2) + M(n)

bull Αποδοτικότητα O(n logn)

bull Βελτιστότητα

25

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αλγόριθμος QuickHull

Υπολογίζει το Κυρτό Περίβλημα με έμπνευση από τη Γρήγορη Ταξινόμηση

bull Υποθέτουμε ότι τα σημεία είναι ταξινομημένα ως προς την συντεταγμένη x

bull Προσδιορίζουμε δύο ακραία σημαία P1 και P2 (μέρη του περιβλήματος)

bull Το σύνολο σημείων S διαιρείται σε δύο υποσύνολα S1 και S2

bull Υπολογίζουμε το κυρτό περίβλημα για το S1

bull Ομοίως υπολογίζουμε το κυρτό περίβλημα για το S1

26

P1

P2

Pmax

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αλγόριθμος QuickHull (2)

bull Υπολογισμός του κυρτού (επάνω) περιβλήματος για το S1

ndashΒρίσκουμε το πιο απομακρυσμένο σημείο Pmax από τη γραμμή P1P2

ndash Υπολογίζουμε το περίβλημα για τα σημεία αριστερά της γραμμής P1Pmax

ndash Υπολογίζουμε το περίβλημα για τα σημεία αριστερά της γραμμής PmaxP2

bull Εύρεση του σημείου Pmax

ndash Το Pmax μεγιστοποιεί την επιφάνεια του τριγώνου PmaxP1P2

ndash Σε περίπτωση ισοπαλίας επιλέγεται το Pmax που μεγιστοποιεί τη γωνία PmaxP1P2

bull Τα σημεία μέσα στο τρίγωνο PmaxP1P2 αγνοούνται εφεξής

bull Πως θα βρεθεί γεωμετρικά το σημείο Pmax και τα σημεία στα αριστερά της γραμμής P1Pmax

27

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αλγόριθμος QuickHull (3)

28

bull Πως θα βρεθεί γεωμετρικά το σημείο Pmax και τα σημεία στα αριστερά της γραμμής P1Pmax

ndash Δίνονται τα σημεία P1(x1y1) P2(x2y2) Pmax(xmaxymax)

ndash Το εμβαδόν του τριγώνου είναι μισό του μεγέθους της ορίζουσας

1199091 1199101 11199092 1199102 1119909119898119886119909 119910119898119886119909 1

= x1y2+xmaxy1+x2ymaxndashxmaxy2ndashx2y1-x1ymax

ndash Το πρόσημο της έκφρασης είναι θετικό αν και μόνο αν το σημείο Pmax

είναι στα αριστερά της γραμμής P1P2

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αποδοτικότητα Αλγορίθμου QuickHull (4)

bull Η εύρεση του πλέον απομακρυσμένου σημείου από την ευθεία P1P2 μπορεί να βρεθεί σε γραμμικό χρόνο

bull Έτσι προκύπτει η ίδια πολυπλοκότητα με τη γρήγορη ταξινόμησηndash Χειρότερη περίπτωση Θ(n2)

ndash Μέση περίπτωση Θ(n log n)

bull Αν τα σημεία δεν είναι αρχικά ταξινομημένα στον άξονα x αυτό επιτυγχάνεται με κόστος Θ(n log n)

bull Άλλοι αλγόριθμοι για το κυρτό περίβλημαndash Σάρωση του Graham DCHull

Επίσης σε Θ(n log n)

29

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Δυαδική Αναζήτηση

Πολύ αποδοτικός αλγόριθμος για αναζήτηση σε ταξινομημένο πίνακα

K

vs

A[0] A[m] A[n-1]

Αν K = A[m] σταμάτησε (επιτυχημένη αναζήτηση Διαφορετικά συνέχισε την αναζήτηση με όμοιο τρόπο στον πίνακα A[0m-1] αν K lt A[m] ή στον A[m+1n-1] αν K gt A[m]

l 0 r n-1

while l r do

m (l+r)2

if K = A[m] return m

else if K lt A[m] r m-1

else l m+1

return -1

30

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Ανάλυση Δυαδικής Αναζήτησης

bull Χρονική αποδοτικότηταndash Χειρότερη περίπτωση Cw (n) = 1 + Cw( n2 ) Cw (1) = 1

ndash Λύση Cw(n) = log2(n+1)

Αυτό είναι πολύ γρήγορο πχ Cw(106) = 20

bull Βέλτιστη μέθοδος για αναζήτηση σε ταξινομημένο πίνακα

bull Περιορισμοί η είσοδος πρέπει να είναι ταξινομημένη και στη μορφή πίνακα όχι πχ συνδεδεμένη λίστα

bull ΟΧΙ καλό παράδειγμα τεχνικής laquoδιαίρει και βασίλευεraquo

bull Υπάρχει ανάλογη τεχνική για τη συνεχή περίπτωση

31

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

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

Τα δυαδικά δένδρα έχουν έτοιμη τη δομή για αλγορίθμους διαίρει και βασίλευε

Πχ κλασικές διασχίσεις (προμεταενδο-διατεταγμένη)

Algorithm Inorder(T)

if T

Inorder(Tleft)

print(root of T)

Inorder(Tright)

ΑποδοτικότηταΘ(n)

32

a

b c

d e

a

b c

d e

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αλγόριθμοι Δυαδικών Δένδρων (2)

33

Άλλο παράδειγμα υπολογισμός ύψους

bull h(T) = maxh(TL) h(TR) + 1 if T and h() = -1

bull Αποδοτικότητα Θ(n)

TL TR

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Σημείωμα Αναφοράς

Copyright Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Ιωάννης Μανωλόπουλος Αναστάσιος Γούναρης laquoΑλγόριθμοι raquo Έκδοση 10 Θεσσαλονίκη 2015 Διαθέσιμο από τη δικτυακή διεύθυνσηhttpeclassauthgrcoursesOCRS417

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons Αναφορά -Μη Εμπορική Χρήση - Παρόμοια Διανομή 40 [1] ή μεταγενέστερη Διεθνής Έκδοση Εξαιρούνται τα αυτοτελή έργα τρίτων πχ φωτογραφίες διαγράμματα κλπ τα οποία εμπεριέχονται σε αυτό και τα οποία αναφέρονται μαζί με τους όρους χρήσης τους στο laquoΣημείωμα Χρήσης Έργων Τρίτωνraquo

Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο

για εμπορική χρήση εφόσον αυτό του ζητηθεί

Ως Μη Εμπορική ορίζεται η χρήση

bull που δεν περιλαμβάνει άμεσο ή έμμεσο οικονομικό όφελος από την χρήση του έργου για το διανομέα του έργου και αδειοδόχο

bull που δεν περιλαμβάνει οικονομική συναλλαγή ως προϋπόθεση για τη χρήση ή πρόσβαση στο έργο

bull που δεν προσπορίζει στο διανομέα του έργου και αδειοδόχο έμμεσο οικονομικό όφελος (πχ διαφημίσεις) από την προβολή του έργου σε διαδικτυακό τόπο

[1] httpcreativecommonsorglicensesby-nc-sa40

Σημείωμα Αδειοδότησης

ΑΡΙΣΤΟΤΕΛΕΙΟ

ΠΑΝΕΠΙΣΤΗΜΙΟ

ΘΕΣΣΑΛΟΝΙΚΗΣ

ΑΝΟΙΚΤΑ

ΑΚΑΔΗΜΑΪΚΑ

ΜΑΘΗΜΑΤΑ

Τέλος ενότητας

Επεξεργασία Ανδρέας ΚοσματόπουλοςΘεσσαλονίκη Αύγουστος 2015

ΑΡΙΣΤΟΤΕΛΕΙΟ

ΠΑΝΕΠΙΣΤΗΜΙΟ

ΘΕΣΣΑΛΟΝΙΚΗΣ

Σημειώματα

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Σημείωμα Ιστορικού Εκδόσεων Έργου

Το παρόν έργο αποτελεί την έκδοση 100

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Διατήρηση Σημειωμάτων

Οποιαδήποτε αναπαραγωγή ή διασκευή του υλικού θα πρέπει να συμπεριλαμβάνει

το Σημείωμα Αναφοράς

το Σημείωμα Αδειοδότησης

τη δήλωση Διατήρησης Σημειωμάτων

το Σημείωμα Χρήσης Έργων Τρίτων (εφόσον υπάρχει)

μαζί με τους συνοδευόμενους υπερσυνδέσμους

Page 16: ΑΛΟΡΙΘΜΟΙ · 2015. 9. 9. · Αλγόριθμος QuickHull (2) •πολογισμός του κυρτού (επάνω)περιβλήματος για το S 1 –ρίσκουμε

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Γρήγορη Ταξινόμηση (3)

Algorithm Partition(A[lr]) Partitions a subarray by using its first

element as pivot Input a subarray A[lr] lltr Output A partition of A[lr] with the

split position returned as this functionrsquos value

pA[l] il jr+1repeat

repeat ii+1 until A[i]geprepeat jj-1 until A[j]lepswap(A[i]A[j])

until igejswap(A[i]A[j]) εξουδετέρωση αλλαγής όταν

igejswap(A[l]A[j])return j

16

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Γρήγορη Ταξινόμηση (4)

Παράδειγμα

5 3 1 9 8 2 4 7

Ποιά είναι η σειρά των κλήσεων συναρτήσεων

17

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Γρήγορη Ταξινόμηση (5)

bull Καλύτερη περίπτωση χωρισμός στη μέση mdash Θ(n log n)

bull Χειρότερη περίπτωση ταξινομημένος πίνακας mdash Θ(n2)

bull Μέση περίπτωση τυχαίος πίνακας mdash Θ(n log n)

bull Βελτιώσεις

ndash Καλύτερη επιλογή του άξονα το μεσαίο από 3 στοιχεία αποφεύγει τη χειρότερη περίπτωση σε ταξινομημένα αρχεία

ndash Γυρνούμε σε ταξινόμηση με εισαγωγή για μικρά υποαρχεία

ndash Αποφεύγουμε την αναδρομή

Μπορούν να δώσουν βελτίωση μέχρι 20-25

bull Θεωρείται η καλύτερη μέθοδος για εσωτερική ταξινόμηση μεγάλων αρχείων (n ge 10000)

18

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Πολλαπλασιασμός μεγάλων ακεραίων (1)

bull Για να πολλαπλασιάσουμε δύο ακεραίους με n1 και n2 ψηφία με το χέρι θα εκτελέσουμε n1n2 πράξεις πολλαπλασιασμού

bull Πρόβλημα όταν έχουμε πολλά ψηφία

ndash A = 12345678901357986429 B = 87654321284820912836

bull Ας δούμε ένα απλούστερο παράδειγμα 2314

- Όμως 23 = 2101+3100 14 = 1101+4100

- Άρα 2314 = (21)102 +(24+31)101 + (34) 100

bull Αν A = 2135 B = 4014

ΑΒ= (21 middot102 + 35) (40 middot102 + 14)

= 21 40 middot104 + (21 14 + 35 40) middot102 + 35 14

19

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Πολλαπλασιασμός μεγάλων ακεραίων (2)

bull Βασική παρατήρηση

α) 2314 = (21)102 +(24+31)101 + (34) 100

= (21)102 +[(2+3)(1+4)-21-34]101 + (34) 100

bull β) 2135 4014 = 21 40 middot104 + (21 14 + 35 40) middot102 + 35 14

= 21 40 middot104 + [(21+35) (40+14) ndash 2140-3514] middot102 + 35 14

bull Γενικώς a=a1a0 b=b1b0 και ζητείται c=ab c = ab = c210n + c1

10n2

+ c0100 όπου c2=a1b1 c0=a0b0 c1=(a1+a0)(b1+b0)-(c2+c0)

bull Αναδρομική εξίσωση M(n) = 3M(n2) M(1) = 1

bull Αποδοτικότητα M(n) = 3log 2n = nlog 23 asymp n1585

20

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Πολλαπλασιασμός πινάκων αλά Strassen

bull Ο Strassen παρατήρησε [1969] ότι το γινόμενο δύο πινάκων A και B (μεγέθους2nx2n) μπορεί να υπολογισθεί ως εξής

C00 1198620111986210 11986211

=A00 1198600111986010 11986011

lowastB00 1198610111986110 11986111

1198721+1198724minus1198725+1198727 1198723+1198725

1198722+1198724 1198721+1198723minus1198722+1198726

21

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Υποπίνακες του Strassen

bull M1 = (A00 + A11) (B00 + B11)

bull M2 = (A10 + A11) B00

bull M3 = A00 (B01 - B11)

bull M4 = A11 (B10 - B00)

bull M5 = (A00 + A01) B11

bull M6 = (A10 - A00) (B00 + B01)

bull M7 = (A01 - A11) (B10 + B11)

22

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αποδοτικότητα του αλγορίθμου Strassen

bull Αν το n δεν είναι δύναμη του 2 τότε οι πίνακες παραγεμίζονται με μηδενικά

bull Πλήθος πολλαπλασιασμών

bull Πλήθος προσθέσεων

bull Αναδρομή

bull Άλλοι αλγόριθμοι έχουν βελτιώσει αυτό το αποτέλεσμα αλλά είναι ακόμη περισσότεροι σύνθετοι

23

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Το πρόβλημα του πλησιέστερου ζεύγους

bull Πρόβλημα βρες τα πλησιέστερα σημεία μεταξύ n σημείων σε ένα k-διάστατο χώρο

bull Υποθέτουμε ότι τα σημεία ταξινομούνται με βάση τις τιμές των τετμημένων x

bull Διαιρούμε τα σημεία σε δύο υποσύνολα S1 και S2 με n2 σημεία με βάση μία κατακόρυφη γραμμή στο x=c

bull Επιλέγουμε το πλησιέστερο ζεύγος μεταξύ των ζευγών του αριστερού υποσυνόλου (απόσταση d1) μεταξύ των ζευγών του δεξιού υποσυνόλου (απόσταση d2) και το πλησιέστερο ζεύγος με σημεία και από τις δύο πλευρές

bull Πρέπει να εξετάσουμε μία λωρίδα πλάτους 2d όπουd=min[d1d2]

24

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Το πρόβλημα του πλησιέστερου ζεύγους (2)

bull Γεωμετρική εξήγηση

bull Αναδρομή T(n) = 2T(n2) + M(n)

bull Αποδοτικότητα O(n logn)

bull Βελτιστότητα

25

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αλγόριθμος QuickHull

Υπολογίζει το Κυρτό Περίβλημα με έμπνευση από τη Γρήγορη Ταξινόμηση

bull Υποθέτουμε ότι τα σημεία είναι ταξινομημένα ως προς την συντεταγμένη x

bull Προσδιορίζουμε δύο ακραία σημαία P1 και P2 (μέρη του περιβλήματος)

bull Το σύνολο σημείων S διαιρείται σε δύο υποσύνολα S1 και S2

bull Υπολογίζουμε το κυρτό περίβλημα για το S1

bull Ομοίως υπολογίζουμε το κυρτό περίβλημα για το S1

26

P1

P2

Pmax

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αλγόριθμος QuickHull (2)

bull Υπολογισμός του κυρτού (επάνω) περιβλήματος για το S1

ndashΒρίσκουμε το πιο απομακρυσμένο σημείο Pmax από τη γραμμή P1P2

ndash Υπολογίζουμε το περίβλημα για τα σημεία αριστερά της γραμμής P1Pmax

ndash Υπολογίζουμε το περίβλημα για τα σημεία αριστερά της γραμμής PmaxP2

bull Εύρεση του σημείου Pmax

ndash Το Pmax μεγιστοποιεί την επιφάνεια του τριγώνου PmaxP1P2

ndash Σε περίπτωση ισοπαλίας επιλέγεται το Pmax που μεγιστοποιεί τη γωνία PmaxP1P2

bull Τα σημεία μέσα στο τρίγωνο PmaxP1P2 αγνοούνται εφεξής

bull Πως θα βρεθεί γεωμετρικά το σημείο Pmax και τα σημεία στα αριστερά της γραμμής P1Pmax

27

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αλγόριθμος QuickHull (3)

28

bull Πως θα βρεθεί γεωμετρικά το σημείο Pmax και τα σημεία στα αριστερά της γραμμής P1Pmax

ndash Δίνονται τα σημεία P1(x1y1) P2(x2y2) Pmax(xmaxymax)

ndash Το εμβαδόν του τριγώνου είναι μισό του μεγέθους της ορίζουσας

1199091 1199101 11199092 1199102 1119909119898119886119909 119910119898119886119909 1

= x1y2+xmaxy1+x2ymaxndashxmaxy2ndashx2y1-x1ymax

ndash Το πρόσημο της έκφρασης είναι θετικό αν και μόνο αν το σημείο Pmax

είναι στα αριστερά της γραμμής P1P2

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αποδοτικότητα Αλγορίθμου QuickHull (4)

bull Η εύρεση του πλέον απομακρυσμένου σημείου από την ευθεία P1P2 μπορεί να βρεθεί σε γραμμικό χρόνο

bull Έτσι προκύπτει η ίδια πολυπλοκότητα με τη γρήγορη ταξινόμησηndash Χειρότερη περίπτωση Θ(n2)

ndash Μέση περίπτωση Θ(n log n)

bull Αν τα σημεία δεν είναι αρχικά ταξινομημένα στον άξονα x αυτό επιτυγχάνεται με κόστος Θ(n log n)

bull Άλλοι αλγόριθμοι για το κυρτό περίβλημαndash Σάρωση του Graham DCHull

Επίσης σε Θ(n log n)

29

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Δυαδική Αναζήτηση

Πολύ αποδοτικός αλγόριθμος για αναζήτηση σε ταξινομημένο πίνακα

K

vs

A[0] A[m] A[n-1]

Αν K = A[m] σταμάτησε (επιτυχημένη αναζήτηση Διαφορετικά συνέχισε την αναζήτηση με όμοιο τρόπο στον πίνακα A[0m-1] αν K lt A[m] ή στον A[m+1n-1] αν K gt A[m]

l 0 r n-1

while l r do

m (l+r)2

if K = A[m] return m

else if K lt A[m] r m-1

else l m+1

return -1

30

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Ανάλυση Δυαδικής Αναζήτησης

bull Χρονική αποδοτικότηταndash Χειρότερη περίπτωση Cw (n) = 1 + Cw( n2 ) Cw (1) = 1

ndash Λύση Cw(n) = log2(n+1)

Αυτό είναι πολύ γρήγορο πχ Cw(106) = 20

bull Βέλτιστη μέθοδος για αναζήτηση σε ταξινομημένο πίνακα

bull Περιορισμοί η είσοδος πρέπει να είναι ταξινομημένη και στη μορφή πίνακα όχι πχ συνδεδεμένη λίστα

bull ΟΧΙ καλό παράδειγμα τεχνικής laquoδιαίρει και βασίλευεraquo

bull Υπάρχει ανάλογη τεχνική για τη συνεχή περίπτωση

31

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

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

Τα δυαδικά δένδρα έχουν έτοιμη τη δομή για αλγορίθμους διαίρει και βασίλευε

Πχ κλασικές διασχίσεις (προμεταενδο-διατεταγμένη)

Algorithm Inorder(T)

if T

Inorder(Tleft)

print(root of T)

Inorder(Tright)

ΑποδοτικότηταΘ(n)

32

a

b c

d e

a

b c

d e

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αλγόριθμοι Δυαδικών Δένδρων (2)

33

Άλλο παράδειγμα υπολογισμός ύψους

bull h(T) = maxh(TL) h(TR) + 1 if T and h() = -1

bull Αποδοτικότητα Θ(n)

TL TR

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Σημείωμα Αναφοράς

Copyright Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Ιωάννης Μανωλόπουλος Αναστάσιος Γούναρης laquoΑλγόριθμοι raquo Έκδοση 10 Θεσσαλονίκη 2015 Διαθέσιμο από τη δικτυακή διεύθυνσηhttpeclassauthgrcoursesOCRS417

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons Αναφορά -Μη Εμπορική Χρήση - Παρόμοια Διανομή 40 [1] ή μεταγενέστερη Διεθνής Έκδοση Εξαιρούνται τα αυτοτελή έργα τρίτων πχ φωτογραφίες διαγράμματα κλπ τα οποία εμπεριέχονται σε αυτό και τα οποία αναφέρονται μαζί με τους όρους χρήσης τους στο laquoΣημείωμα Χρήσης Έργων Τρίτωνraquo

Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο

για εμπορική χρήση εφόσον αυτό του ζητηθεί

Ως Μη Εμπορική ορίζεται η χρήση

bull που δεν περιλαμβάνει άμεσο ή έμμεσο οικονομικό όφελος από την χρήση του έργου για το διανομέα του έργου και αδειοδόχο

bull που δεν περιλαμβάνει οικονομική συναλλαγή ως προϋπόθεση για τη χρήση ή πρόσβαση στο έργο

bull που δεν προσπορίζει στο διανομέα του έργου και αδειοδόχο έμμεσο οικονομικό όφελος (πχ διαφημίσεις) από την προβολή του έργου σε διαδικτυακό τόπο

[1] httpcreativecommonsorglicensesby-nc-sa40

Σημείωμα Αδειοδότησης

ΑΡΙΣΤΟΤΕΛΕΙΟ

ΠΑΝΕΠΙΣΤΗΜΙΟ

ΘΕΣΣΑΛΟΝΙΚΗΣ

ΑΝΟΙΚΤΑ

ΑΚΑΔΗΜΑΪΚΑ

ΜΑΘΗΜΑΤΑ

Τέλος ενότητας

Επεξεργασία Ανδρέας ΚοσματόπουλοςΘεσσαλονίκη Αύγουστος 2015

ΑΡΙΣΤΟΤΕΛΕΙΟ

ΠΑΝΕΠΙΣΤΗΜΙΟ

ΘΕΣΣΑΛΟΝΙΚΗΣ

Σημειώματα

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Σημείωμα Ιστορικού Εκδόσεων Έργου

Το παρόν έργο αποτελεί την έκδοση 100

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Διατήρηση Σημειωμάτων

Οποιαδήποτε αναπαραγωγή ή διασκευή του υλικού θα πρέπει να συμπεριλαμβάνει

το Σημείωμα Αναφοράς

το Σημείωμα Αδειοδότησης

τη δήλωση Διατήρησης Σημειωμάτων

το Σημείωμα Χρήσης Έργων Τρίτων (εφόσον υπάρχει)

μαζί με τους συνοδευόμενους υπερσυνδέσμους

Page 17: ΑΛΟΡΙΘΜΟΙ · 2015. 9. 9. · Αλγόριθμος QuickHull (2) •πολογισμός του κυρτού (επάνω)περιβλήματος για το S 1 –ρίσκουμε

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Γρήγορη Ταξινόμηση (4)

Παράδειγμα

5 3 1 9 8 2 4 7

Ποιά είναι η σειρά των κλήσεων συναρτήσεων

17

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Γρήγορη Ταξινόμηση (5)

bull Καλύτερη περίπτωση χωρισμός στη μέση mdash Θ(n log n)

bull Χειρότερη περίπτωση ταξινομημένος πίνακας mdash Θ(n2)

bull Μέση περίπτωση τυχαίος πίνακας mdash Θ(n log n)

bull Βελτιώσεις

ndash Καλύτερη επιλογή του άξονα το μεσαίο από 3 στοιχεία αποφεύγει τη χειρότερη περίπτωση σε ταξινομημένα αρχεία

ndash Γυρνούμε σε ταξινόμηση με εισαγωγή για μικρά υποαρχεία

ndash Αποφεύγουμε την αναδρομή

Μπορούν να δώσουν βελτίωση μέχρι 20-25

bull Θεωρείται η καλύτερη μέθοδος για εσωτερική ταξινόμηση μεγάλων αρχείων (n ge 10000)

18

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Πολλαπλασιασμός μεγάλων ακεραίων (1)

bull Για να πολλαπλασιάσουμε δύο ακεραίους με n1 και n2 ψηφία με το χέρι θα εκτελέσουμε n1n2 πράξεις πολλαπλασιασμού

bull Πρόβλημα όταν έχουμε πολλά ψηφία

ndash A = 12345678901357986429 B = 87654321284820912836

bull Ας δούμε ένα απλούστερο παράδειγμα 2314

- Όμως 23 = 2101+3100 14 = 1101+4100

- Άρα 2314 = (21)102 +(24+31)101 + (34) 100

bull Αν A = 2135 B = 4014

ΑΒ= (21 middot102 + 35) (40 middot102 + 14)

= 21 40 middot104 + (21 14 + 35 40) middot102 + 35 14

19

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Πολλαπλασιασμός μεγάλων ακεραίων (2)

bull Βασική παρατήρηση

α) 2314 = (21)102 +(24+31)101 + (34) 100

= (21)102 +[(2+3)(1+4)-21-34]101 + (34) 100

bull β) 2135 4014 = 21 40 middot104 + (21 14 + 35 40) middot102 + 35 14

= 21 40 middot104 + [(21+35) (40+14) ndash 2140-3514] middot102 + 35 14

bull Γενικώς a=a1a0 b=b1b0 και ζητείται c=ab c = ab = c210n + c1

10n2

+ c0100 όπου c2=a1b1 c0=a0b0 c1=(a1+a0)(b1+b0)-(c2+c0)

bull Αναδρομική εξίσωση M(n) = 3M(n2) M(1) = 1

bull Αποδοτικότητα M(n) = 3log 2n = nlog 23 asymp n1585

20

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Πολλαπλασιασμός πινάκων αλά Strassen

bull Ο Strassen παρατήρησε [1969] ότι το γινόμενο δύο πινάκων A και B (μεγέθους2nx2n) μπορεί να υπολογισθεί ως εξής

C00 1198620111986210 11986211

=A00 1198600111986010 11986011

lowastB00 1198610111986110 11986111

1198721+1198724minus1198725+1198727 1198723+1198725

1198722+1198724 1198721+1198723minus1198722+1198726

21

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Υποπίνακες του Strassen

bull M1 = (A00 + A11) (B00 + B11)

bull M2 = (A10 + A11) B00

bull M3 = A00 (B01 - B11)

bull M4 = A11 (B10 - B00)

bull M5 = (A00 + A01) B11

bull M6 = (A10 - A00) (B00 + B01)

bull M7 = (A01 - A11) (B10 + B11)

22

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αποδοτικότητα του αλγορίθμου Strassen

bull Αν το n δεν είναι δύναμη του 2 τότε οι πίνακες παραγεμίζονται με μηδενικά

bull Πλήθος πολλαπλασιασμών

bull Πλήθος προσθέσεων

bull Αναδρομή

bull Άλλοι αλγόριθμοι έχουν βελτιώσει αυτό το αποτέλεσμα αλλά είναι ακόμη περισσότεροι σύνθετοι

23

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Το πρόβλημα του πλησιέστερου ζεύγους

bull Πρόβλημα βρες τα πλησιέστερα σημεία μεταξύ n σημείων σε ένα k-διάστατο χώρο

bull Υποθέτουμε ότι τα σημεία ταξινομούνται με βάση τις τιμές των τετμημένων x

bull Διαιρούμε τα σημεία σε δύο υποσύνολα S1 και S2 με n2 σημεία με βάση μία κατακόρυφη γραμμή στο x=c

bull Επιλέγουμε το πλησιέστερο ζεύγος μεταξύ των ζευγών του αριστερού υποσυνόλου (απόσταση d1) μεταξύ των ζευγών του δεξιού υποσυνόλου (απόσταση d2) και το πλησιέστερο ζεύγος με σημεία και από τις δύο πλευρές

bull Πρέπει να εξετάσουμε μία λωρίδα πλάτους 2d όπουd=min[d1d2]

24

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Το πρόβλημα του πλησιέστερου ζεύγους (2)

bull Γεωμετρική εξήγηση

bull Αναδρομή T(n) = 2T(n2) + M(n)

bull Αποδοτικότητα O(n logn)

bull Βελτιστότητα

25

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αλγόριθμος QuickHull

Υπολογίζει το Κυρτό Περίβλημα με έμπνευση από τη Γρήγορη Ταξινόμηση

bull Υποθέτουμε ότι τα σημεία είναι ταξινομημένα ως προς την συντεταγμένη x

bull Προσδιορίζουμε δύο ακραία σημαία P1 και P2 (μέρη του περιβλήματος)

bull Το σύνολο σημείων S διαιρείται σε δύο υποσύνολα S1 και S2

bull Υπολογίζουμε το κυρτό περίβλημα για το S1

bull Ομοίως υπολογίζουμε το κυρτό περίβλημα για το S1

26

P1

P2

Pmax

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αλγόριθμος QuickHull (2)

bull Υπολογισμός του κυρτού (επάνω) περιβλήματος για το S1

ndashΒρίσκουμε το πιο απομακρυσμένο σημείο Pmax από τη γραμμή P1P2

ndash Υπολογίζουμε το περίβλημα για τα σημεία αριστερά της γραμμής P1Pmax

ndash Υπολογίζουμε το περίβλημα για τα σημεία αριστερά της γραμμής PmaxP2

bull Εύρεση του σημείου Pmax

ndash Το Pmax μεγιστοποιεί την επιφάνεια του τριγώνου PmaxP1P2

ndash Σε περίπτωση ισοπαλίας επιλέγεται το Pmax που μεγιστοποιεί τη γωνία PmaxP1P2

bull Τα σημεία μέσα στο τρίγωνο PmaxP1P2 αγνοούνται εφεξής

bull Πως θα βρεθεί γεωμετρικά το σημείο Pmax και τα σημεία στα αριστερά της γραμμής P1Pmax

27

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αλγόριθμος QuickHull (3)

28

bull Πως θα βρεθεί γεωμετρικά το σημείο Pmax και τα σημεία στα αριστερά της γραμμής P1Pmax

ndash Δίνονται τα σημεία P1(x1y1) P2(x2y2) Pmax(xmaxymax)

ndash Το εμβαδόν του τριγώνου είναι μισό του μεγέθους της ορίζουσας

1199091 1199101 11199092 1199102 1119909119898119886119909 119910119898119886119909 1

= x1y2+xmaxy1+x2ymaxndashxmaxy2ndashx2y1-x1ymax

ndash Το πρόσημο της έκφρασης είναι θετικό αν και μόνο αν το σημείο Pmax

είναι στα αριστερά της γραμμής P1P2

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αποδοτικότητα Αλγορίθμου QuickHull (4)

bull Η εύρεση του πλέον απομακρυσμένου σημείου από την ευθεία P1P2 μπορεί να βρεθεί σε γραμμικό χρόνο

bull Έτσι προκύπτει η ίδια πολυπλοκότητα με τη γρήγορη ταξινόμησηndash Χειρότερη περίπτωση Θ(n2)

ndash Μέση περίπτωση Θ(n log n)

bull Αν τα σημεία δεν είναι αρχικά ταξινομημένα στον άξονα x αυτό επιτυγχάνεται με κόστος Θ(n log n)

bull Άλλοι αλγόριθμοι για το κυρτό περίβλημαndash Σάρωση του Graham DCHull

Επίσης σε Θ(n log n)

29

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Δυαδική Αναζήτηση

Πολύ αποδοτικός αλγόριθμος για αναζήτηση σε ταξινομημένο πίνακα

K

vs

A[0] A[m] A[n-1]

Αν K = A[m] σταμάτησε (επιτυχημένη αναζήτηση Διαφορετικά συνέχισε την αναζήτηση με όμοιο τρόπο στον πίνακα A[0m-1] αν K lt A[m] ή στον A[m+1n-1] αν K gt A[m]

l 0 r n-1

while l r do

m (l+r)2

if K = A[m] return m

else if K lt A[m] r m-1

else l m+1

return -1

30

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Ανάλυση Δυαδικής Αναζήτησης

bull Χρονική αποδοτικότηταndash Χειρότερη περίπτωση Cw (n) = 1 + Cw( n2 ) Cw (1) = 1

ndash Λύση Cw(n) = log2(n+1)

Αυτό είναι πολύ γρήγορο πχ Cw(106) = 20

bull Βέλτιστη μέθοδος για αναζήτηση σε ταξινομημένο πίνακα

bull Περιορισμοί η είσοδος πρέπει να είναι ταξινομημένη και στη μορφή πίνακα όχι πχ συνδεδεμένη λίστα

bull ΟΧΙ καλό παράδειγμα τεχνικής laquoδιαίρει και βασίλευεraquo

bull Υπάρχει ανάλογη τεχνική για τη συνεχή περίπτωση

31

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

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

Τα δυαδικά δένδρα έχουν έτοιμη τη δομή για αλγορίθμους διαίρει και βασίλευε

Πχ κλασικές διασχίσεις (προμεταενδο-διατεταγμένη)

Algorithm Inorder(T)

if T

Inorder(Tleft)

print(root of T)

Inorder(Tright)

ΑποδοτικότηταΘ(n)

32

a

b c

d e

a

b c

d e

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αλγόριθμοι Δυαδικών Δένδρων (2)

33

Άλλο παράδειγμα υπολογισμός ύψους

bull h(T) = maxh(TL) h(TR) + 1 if T and h() = -1

bull Αποδοτικότητα Θ(n)

TL TR

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Σημείωμα Αναφοράς

Copyright Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Ιωάννης Μανωλόπουλος Αναστάσιος Γούναρης laquoΑλγόριθμοι raquo Έκδοση 10 Θεσσαλονίκη 2015 Διαθέσιμο από τη δικτυακή διεύθυνσηhttpeclassauthgrcoursesOCRS417

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons Αναφορά -Μη Εμπορική Χρήση - Παρόμοια Διανομή 40 [1] ή μεταγενέστερη Διεθνής Έκδοση Εξαιρούνται τα αυτοτελή έργα τρίτων πχ φωτογραφίες διαγράμματα κλπ τα οποία εμπεριέχονται σε αυτό και τα οποία αναφέρονται μαζί με τους όρους χρήσης τους στο laquoΣημείωμα Χρήσης Έργων Τρίτωνraquo

Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο

για εμπορική χρήση εφόσον αυτό του ζητηθεί

Ως Μη Εμπορική ορίζεται η χρήση

bull που δεν περιλαμβάνει άμεσο ή έμμεσο οικονομικό όφελος από την χρήση του έργου για το διανομέα του έργου και αδειοδόχο

bull που δεν περιλαμβάνει οικονομική συναλλαγή ως προϋπόθεση για τη χρήση ή πρόσβαση στο έργο

bull που δεν προσπορίζει στο διανομέα του έργου και αδειοδόχο έμμεσο οικονομικό όφελος (πχ διαφημίσεις) από την προβολή του έργου σε διαδικτυακό τόπο

[1] httpcreativecommonsorglicensesby-nc-sa40

Σημείωμα Αδειοδότησης

ΑΡΙΣΤΟΤΕΛΕΙΟ

ΠΑΝΕΠΙΣΤΗΜΙΟ

ΘΕΣΣΑΛΟΝΙΚΗΣ

ΑΝΟΙΚΤΑ

ΑΚΑΔΗΜΑΪΚΑ

ΜΑΘΗΜΑΤΑ

Τέλος ενότητας

Επεξεργασία Ανδρέας ΚοσματόπουλοςΘεσσαλονίκη Αύγουστος 2015

ΑΡΙΣΤΟΤΕΛΕΙΟ

ΠΑΝΕΠΙΣΤΗΜΙΟ

ΘΕΣΣΑΛΟΝΙΚΗΣ

Σημειώματα

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Σημείωμα Ιστορικού Εκδόσεων Έργου

Το παρόν έργο αποτελεί την έκδοση 100

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Διατήρηση Σημειωμάτων

Οποιαδήποτε αναπαραγωγή ή διασκευή του υλικού θα πρέπει να συμπεριλαμβάνει

το Σημείωμα Αναφοράς

το Σημείωμα Αδειοδότησης

τη δήλωση Διατήρησης Σημειωμάτων

το Σημείωμα Χρήσης Έργων Τρίτων (εφόσον υπάρχει)

μαζί με τους συνοδευόμενους υπερσυνδέσμους

Page 18: ΑΛΟΡΙΘΜΟΙ · 2015. 9. 9. · Αλγόριθμος QuickHull (2) •πολογισμός του κυρτού (επάνω)περιβλήματος για το S 1 –ρίσκουμε

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Γρήγορη Ταξινόμηση (5)

bull Καλύτερη περίπτωση χωρισμός στη μέση mdash Θ(n log n)

bull Χειρότερη περίπτωση ταξινομημένος πίνακας mdash Θ(n2)

bull Μέση περίπτωση τυχαίος πίνακας mdash Θ(n log n)

bull Βελτιώσεις

ndash Καλύτερη επιλογή του άξονα το μεσαίο από 3 στοιχεία αποφεύγει τη χειρότερη περίπτωση σε ταξινομημένα αρχεία

ndash Γυρνούμε σε ταξινόμηση με εισαγωγή για μικρά υποαρχεία

ndash Αποφεύγουμε την αναδρομή

Μπορούν να δώσουν βελτίωση μέχρι 20-25

bull Θεωρείται η καλύτερη μέθοδος για εσωτερική ταξινόμηση μεγάλων αρχείων (n ge 10000)

18

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Πολλαπλασιασμός μεγάλων ακεραίων (1)

bull Για να πολλαπλασιάσουμε δύο ακεραίους με n1 και n2 ψηφία με το χέρι θα εκτελέσουμε n1n2 πράξεις πολλαπλασιασμού

bull Πρόβλημα όταν έχουμε πολλά ψηφία

ndash A = 12345678901357986429 B = 87654321284820912836

bull Ας δούμε ένα απλούστερο παράδειγμα 2314

- Όμως 23 = 2101+3100 14 = 1101+4100

- Άρα 2314 = (21)102 +(24+31)101 + (34) 100

bull Αν A = 2135 B = 4014

ΑΒ= (21 middot102 + 35) (40 middot102 + 14)

= 21 40 middot104 + (21 14 + 35 40) middot102 + 35 14

19

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Πολλαπλασιασμός μεγάλων ακεραίων (2)

bull Βασική παρατήρηση

α) 2314 = (21)102 +(24+31)101 + (34) 100

= (21)102 +[(2+3)(1+4)-21-34]101 + (34) 100

bull β) 2135 4014 = 21 40 middot104 + (21 14 + 35 40) middot102 + 35 14

= 21 40 middot104 + [(21+35) (40+14) ndash 2140-3514] middot102 + 35 14

bull Γενικώς a=a1a0 b=b1b0 και ζητείται c=ab c = ab = c210n + c1

10n2

+ c0100 όπου c2=a1b1 c0=a0b0 c1=(a1+a0)(b1+b0)-(c2+c0)

bull Αναδρομική εξίσωση M(n) = 3M(n2) M(1) = 1

bull Αποδοτικότητα M(n) = 3log 2n = nlog 23 asymp n1585

20

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Πολλαπλασιασμός πινάκων αλά Strassen

bull Ο Strassen παρατήρησε [1969] ότι το γινόμενο δύο πινάκων A και B (μεγέθους2nx2n) μπορεί να υπολογισθεί ως εξής

C00 1198620111986210 11986211

=A00 1198600111986010 11986011

lowastB00 1198610111986110 11986111

1198721+1198724minus1198725+1198727 1198723+1198725

1198722+1198724 1198721+1198723minus1198722+1198726

21

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Υποπίνακες του Strassen

bull M1 = (A00 + A11) (B00 + B11)

bull M2 = (A10 + A11) B00

bull M3 = A00 (B01 - B11)

bull M4 = A11 (B10 - B00)

bull M5 = (A00 + A01) B11

bull M6 = (A10 - A00) (B00 + B01)

bull M7 = (A01 - A11) (B10 + B11)

22

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αποδοτικότητα του αλγορίθμου Strassen

bull Αν το n δεν είναι δύναμη του 2 τότε οι πίνακες παραγεμίζονται με μηδενικά

bull Πλήθος πολλαπλασιασμών

bull Πλήθος προσθέσεων

bull Αναδρομή

bull Άλλοι αλγόριθμοι έχουν βελτιώσει αυτό το αποτέλεσμα αλλά είναι ακόμη περισσότεροι σύνθετοι

23

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Το πρόβλημα του πλησιέστερου ζεύγους

bull Πρόβλημα βρες τα πλησιέστερα σημεία μεταξύ n σημείων σε ένα k-διάστατο χώρο

bull Υποθέτουμε ότι τα σημεία ταξινομούνται με βάση τις τιμές των τετμημένων x

bull Διαιρούμε τα σημεία σε δύο υποσύνολα S1 και S2 με n2 σημεία με βάση μία κατακόρυφη γραμμή στο x=c

bull Επιλέγουμε το πλησιέστερο ζεύγος μεταξύ των ζευγών του αριστερού υποσυνόλου (απόσταση d1) μεταξύ των ζευγών του δεξιού υποσυνόλου (απόσταση d2) και το πλησιέστερο ζεύγος με σημεία και από τις δύο πλευρές

bull Πρέπει να εξετάσουμε μία λωρίδα πλάτους 2d όπουd=min[d1d2]

24

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Το πρόβλημα του πλησιέστερου ζεύγους (2)

bull Γεωμετρική εξήγηση

bull Αναδρομή T(n) = 2T(n2) + M(n)

bull Αποδοτικότητα O(n logn)

bull Βελτιστότητα

25

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αλγόριθμος QuickHull

Υπολογίζει το Κυρτό Περίβλημα με έμπνευση από τη Γρήγορη Ταξινόμηση

bull Υποθέτουμε ότι τα σημεία είναι ταξινομημένα ως προς την συντεταγμένη x

bull Προσδιορίζουμε δύο ακραία σημαία P1 και P2 (μέρη του περιβλήματος)

bull Το σύνολο σημείων S διαιρείται σε δύο υποσύνολα S1 και S2

bull Υπολογίζουμε το κυρτό περίβλημα για το S1

bull Ομοίως υπολογίζουμε το κυρτό περίβλημα για το S1

26

P1

P2

Pmax

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αλγόριθμος QuickHull (2)

bull Υπολογισμός του κυρτού (επάνω) περιβλήματος για το S1

ndashΒρίσκουμε το πιο απομακρυσμένο σημείο Pmax από τη γραμμή P1P2

ndash Υπολογίζουμε το περίβλημα για τα σημεία αριστερά της γραμμής P1Pmax

ndash Υπολογίζουμε το περίβλημα για τα σημεία αριστερά της γραμμής PmaxP2

bull Εύρεση του σημείου Pmax

ndash Το Pmax μεγιστοποιεί την επιφάνεια του τριγώνου PmaxP1P2

ndash Σε περίπτωση ισοπαλίας επιλέγεται το Pmax που μεγιστοποιεί τη γωνία PmaxP1P2

bull Τα σημεία μέσα στο τρίγωνο PmaxP1P2 αγνοούνται εφεξής

bull Πως θα βρεθεί γεωμετρικά το σημείο Pmax και τα σημεία στα αριστερά της γραμμής P1Pmax

27

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αλγόριθμος QuickHull (3)

28

bull Πως θα βρεθεί γεωμετρικά το σημείο Pmax και τα σημεία στα αριστερά της γραμμής P1Pmax

ndash Δίνονται τα σημεία P1(x1y1) P2(x2y2) Pmax(xmaxymax)

ndash Το εμβαδόν του τριγώνου είναι μισό του μεγέθους της ορίζουσας

1199091 1199101 11199092 1199102 1119909119898119886119909 119910119898119886119909 1

= x1y2+xmaxy1+x2ymaxndashxmaxy2ndashx2y1-x1ymax

ndash Το πρόσημο της έκφρασης είναι θετικό αν και μόνο αν το σημείο Pmax

είναι στα αριστερά της γραμμής P1P2

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αποδοτικότητα Αλγορίθμου QuickHull (4)

bull Η εύρεση του πλέον απομακρυσμένου σημείου από την ευθεία P1P2 μπορεί να βρεθεί σε γραμμικό χρόνο

bull Έτσι προκύπτει η ίδια πολυπλοκότητα με τη γρήγορη ταξινόμησηndash Χειρότερη περίπτωση Θ(n2)

ndash Μέση περίπτωση Θ(n log n)

bull Αν τα σημεία δεν είναι αρχικά ταξινομημένα στον άξονα x αυτό επιτυγχάνεται με κόστος Θ(n log n)

bull Άλλοι αλγόριθμοι για το κυρτό περίβλημαndash Σάρωση του Graham DCHull

Επίσης σε Θ(n log n)

29

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Δυαδική Αναζήτηση

Πολύ αποδοτικός αλγόριθμος για αναζήτηση σε ταξινομημένο πίνακα

K

vs

A[0] A[m] A[n-1]

Αν K = A[m] σταμάτησε (επιτυχημένη αναζήτηση Διαφορετικά συνέχισε την αναζήτηση με όμοιο τρόπο στον πίνακα A[0m-1] αν K lt A[m] ή στον A[m+1n-1] αν K gt A[m]

l 0 r n-1

while l r do

m (l+r)2

if K = A[m] return m

else if K lt A[m] r m-1

else l m+1

return -1

30

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Ανάλυση Δυαδικής Αναζήτησης

bull Χρονική αποδοτικότηταndash Χειρότερη περίπτωση Cw (n) = 1 + Cw( n2 ) Cw (1) = 1

ndash Λύση Cw(n) = log2(n+1)

Αυτό είναι πολύ γρήγορο πχ Cw(106) = 20

bull Βέλτιστη μέθοδος για αναζήτηση σε ταξινομημένο πίνακα

bull Περιορισμοί η είσοδος πρέπει να είναι ταξινομημένη και στη μορφή πίνακα όχι πχ συνδεδεμένη λίστα

bull ΟΧΙ καλό παράδειγμα τεχνικής laquoδιαίρει και βασίλευεraquo

bull Υπάρχει ανάλογη τεχνική για τη συνεχή περίπτωση

31

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

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

Τα δυαδικά δένδρα έχουν έτοιμη τη δομή για αλγορίθμους διαίρει και βασίλευε

Πχ κλασικές διασχίσεις (προμεταενδο-διατεταγμένη)

Algorithm Inorder(T)

if T

Inorder(Tleft)

print(root of T)

Inorder(Tright)

ΑποδοτικότηταΘ(n)

32

a

b c

d e

a

b c

d e

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αλγόριθμοι Δυαδικών Δένδρων (2)

33

Άλλο παράδειγμα υπολογισμός ύψους

bull h(T) = maxh(TL) h(TR) + 1 if T and h() = -1

bull Αποδοτικότητα Θ(n)

TL TR

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Σημείωμα Αναφοράς

Copyright Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Ιωάννης Μανωλόπουλος Αναστάσιος Γούναρης laquoΑλγόριθμοι raquo Έκδοση 10 Θεσσαλονίκη 2015 Διαθέσιμο από τη δικτυακή διεύθυνσηhttpeclassauthgrcoursesOCRS417

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons Αναφορά -Μη Εμπορική Χρήση - Παρόμοια Διανομή 40 [1] ή μεταγενέστερη Διεθνής Έκδοση Εξαιρούνται τα αυτοτελή έργα τρίτων πχ φωτογραφίες διαγράμματα κλπ τα οποία εμπεριέχονται σε αυτό και τα οποία αναφέρονται μαζί με τους όρους χρήσης τους στο laquoΣημείωμα Χρήσης Έργων Τρίτωνraquo

Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο

για εμπορική χρήση εφόσον αυτό του ζητηθεί

Ως Μη Εμπορική ορίζεται η χρήση

bull που δεν περιλαμβάνει άμεσο ή έμμεσο οικονομικό όφελος από την χρήση του έργου για το διανομέα του έργου και αδειοδόχο

bull που δεν περιλαμβάνει οικονομική συναλλαγή ως προϋπόθεση για τη χρήση ή πρόσβαση στο έργο

bull που δεν προσπορίζει στο διανομέα του έργου και αδειοδόχο έμμεσο οικονομικό όφελος (πχ διαφημίσεις) από την προβολή του έργου σε διαδικτυακό τόπο

[1] httpcreativecommonsorglicensesby-nc-sa40

Σημείωμα Αδειοδότησης

ΑΡΙΣΤΟΤΕΛΕΙΟ

ΠΑΝΕΠΙΣΤΗΜΙΟ

ΘΕΣΣΑΛΟΝΙΚΗΣ

ΑΝΟΙΚΤΑ

ΑΚΑΔΗΜΑΪΚΑ

ΜΑΘΗΜΑΤΑ

Τέλος ενότητας

Επεξεργασία Ανδρέας ΚοσματόπουλοςΘεσσαλονίκη Αύγουστος 2015

ΑΡΙΣΤΟΤΕΛΕΙΟ

ΠΑΝΕΠΙΣΤΗΜΙΟ

ΘΕΣΣΑΛΟΝΙΚΗΣ

Σημειώματα

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Σημείωμα Ιστορικού Εκδόσεων Έργου

Το παρόν έργο αποτελεί την έκδοση 100

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Διατήρηση Σημειωμάτων

Οποιαδήποτε αναπαραγωγή ή διασκευή του υλικού θα πρέπει να συμπεριλαμβάνει

το Σημείωμα Αναφοράς

το Σημείωμα Αδειοδότησης

τη δήλωση Διατήρησης Σημειωμάτων

το Σημείωμα Χρήσης Έργων Τρίτων (εφόσον υπάρχει)

μαζί με τους συνοδευόμενους υπερσυνδέσμους

Page 19: ΑΛΟΡΙΘΜΟΙ · 2015. 9. 9. · Αλγόριθμος QuickHull (2) •πολογισμός του κυρτού (επάνω)περιβλήματος για το S 1 –ρίσκουμε

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Πολλαπλασιασμός μεγάλων ακεραίων (1)

bull Για να πολλαπλασιάσουμε δύο ακεραίους με n1 και n2 ψηφία με το χέρι θα εκτελέσουμε n1n2 πράξεις πολλαπλασιασμού

bull Πρόβλημα όταν έχουμε πολλά ψηφία

ndash A = 12345678901357986429 B = 87654321284820912836

bull Ας δούμε ένα απλούστερο παράδειγμα 2314

- Όμως 23 = 2101+3100 14 = 1101+4100

- Άρα 2314 = (21)102 +(24+31)101 + (34) 100

bull Αν A = 2135 B = 4014

ΑΒ= (21 middot102 + 35) (40 middot102 + 14)

= 21 40 middot104 + (21 14 + 35 40) middot102 + 35 14

19

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Πολλαπλασιασμός μεγάλων ακεραίων (2)

bull Βασική παρατήρηση

α) 2314 = (21)102 +(24+31)101 + (34) 100

= (21)102 +[(2+3)(1+4)-21-34]101 + (34) 100

bull β) 2135 4014 = 21 40 middot104 + (21 14 + 35 40) middot102 + 35 14

= 21 40 middot104 + [(21+35) (40+14) ndash 2140-3514] middot102 + 35 14

bull Γενικώς a=a1a0 b=b1b0 και ζητείται c=ab c = ab = c210n + c1

10n2

+ c0100 όπου c2=a1b1 c0=a0b0 c1=(a1+a0)(b1+b0)-(c2+c0)

bull Αναδρομική εξίσωση M(n) = 3M(n2) M(1) = 1

bull Αποδοτικότητα M(n) = 3log 2n = nlog 23 asymp n1585

20

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Πολλαπλασιασμός πινάκων αλά Strassen

bull Ο Strassen παρατήρησε [1969] ότι το γινόμενο δύο πινάκων A και B (μεγέθους2nx2n) μπορεί να υπολογισθεί ως εξής

C00 1198620111986210 11986211

=A00 1198600111986010 11986011

lowastB00 1198610111986110 11986111

1198721+1198724minus1198725+1198727 1198723+1198725

1198722+1198724 1198721+1198723minus1198722+1198726

21

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Υποπίνακες του Strassen

bull M1 = (A00 + A11) (B00 + B11)

bull M2 = (A10 + A11) B00

bull M3 = A00 (B01 - B11)

bull M4 = A11 (B10 - B00)

bull M5 = (A00 + A01) B11

bull M6 = (A10 - A00) (B00 + B01)

bull M7 = (A01 - A11) (B10 + B11)

22

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αποδοτικότητα του αλγορίθμου Strassen

bull Αν το n δεν είναι δύναμη του 2 τότε οι πίνακες παραγεμίζονται με μηδενικά

bull Πλήθος πολλαπλασιασμών

bull Πλήθος προσθέσεων

bull Αναδρομή

bull Άλλοι αλγόριθμοι έχουν βελτιώσει αυτό το αποτέλεσμα αλλά είναι ακόμη περισσότεροι σύνθετοι

23

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Το πρόβλημα του πλησιέστερου ζεύγους

bull Πρόβλημα βρες τα πλησιέστερα σημεία μεταξύ n σημείων σε ένα k-διάστατο χώρο

bull Υποθέτουμε ότι τα σημεία ταξινομούνται με βάση τις τιμές των τετμημένων x

bull Διαιρούμε τα σημεία σε δύο υποσύνολα S1 και S2 με n2 σημεία με βάση μία κατακόρυφη γραμμή στο x=c

bull Επιλέγουμε το πλησιέστερο ζεύγος μεταξύ των ζευγών του αριστερού υποσυνόλου (απόσταση d1) μεταξύ των ζευγών του δεξιού υποσυνόλου (απόσταση d2) και το πλησιέστερο ζεύγος με σημεία και από τις δύο πλευρές

bull Πρέπει να εξετάσουμε μία λωρίδα πλάτους 2d όπουd=min[d1d2]

24

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Το πρόβλημα του πλησιέστερου ζεύγους (2)

bull Γεωμετρική εξήγηση

bull Αναδρομή T(n) = 2T(n2) + M(n)

bull Αποδοτικότητα O(n logn)

bull Βελτιστότητα

25

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αλγόριθμος QuickHull

Υπολογίζει το Κυρτό Περίβλημα με έμπνευση από τη Γρήγορη Ταξινόμηση

bull Υποθέτουμε ότι τα σημεία είναι ταξινομημένα ως προς την συντεταγμένη x

bull Προσδιορίζουμε δύο ακραία σημαία P1 και P2 (μέρη του περιβλήματος)

bull Το σύνολο σημείων S διαιρείται σε δύο υποσύνολα S1 και S2

bull Υπολογίζουμε το κυρτό περίβλημα για το S1

bull Ομοίως υπολογίζουμε το κυρτό περίβλημα για το S1

26

P1

P2

Pmax

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αλγόριθμος QuickHull (2)

bull Υπολογισμός του κυρτού (επάνω) περιβλήματος για το S1

ndashΒρίσκουμε το πιο απομακρυσμένο σημείο Pmax από τη γραμμή P1P2

ndash Υπολογίζουμε το περίβλημα για τα σημεία αριστερά της γραμμής P1Pmax

ndash Υπολογίζουμε το περίβλημα για τα σημεία αριστερά της γραμμής PmaxP2

bull Εύρεση του σημείου Pmax

ndash Το Pmax μεγιστοποιεί την επιφάνεια του τριγώνου PmaxP1P2

ndash Σε περίπτωση ισοπαλίας επιλέγεται το Pmax που μεγιστοποιεί τη γωνία PmaxP1P2

bull Τα σημεία μέσα στο τρίγωνο PmaxP1P2 αγνοούνται εφεξής

bull Πως θα βρεθεί γεωμετρικά το σημείο Pmax και τα σημεία στα αριστερά της γραμμής P1Pmax

27

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αλγόριθμος QuickHull (3)

28

bull Πως θα βρεθεί γεωμετρικά το σημείο Pmax και τα σημεία στα αριστερά της γραμμής P1Pmax

ndash Δίνονται τα σημεία P1(x1y1) P2(x2y2) Pmax(xmaxymax)

ndash Το εμβαδόν του τριγώνου είναι μισό του μεγέθους της ορίζουσας

1199091 1199101 11199092 1199102 1119909119898119886119909 119910119898119886119909 1

= x1y2+xmaxy1+x2ymaxndashxmaxy2ndashx2y1-x1ymax

ndash Το πρόσημο της έκφρασης είναι θετικό αν και μόνο αν το σημείο Pmax

είναι στα αριστερά της γραμμής P1P2

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αποδοτικότητα Αλγορίθμου QuickHull (4)

bull Η εύρεση του πλέον απομακρυσμένου σημείου από την ευθεία P1P2 μπορεί να βρεθεί σε γραμμικό χρόνο

bull Έτσι προκύπτει η ίδια πολυπλοκότητα με τη γρήγορη ταξινόμησηndash Χειρότερη περίπτωση Θ(n2)

ndash Μέση περίπτωση Θ(n log n)

bull Αν τα σημεία δεν είναι αρχικά ταξινομημένα στον άξονα x αυτό επιτυγχάνεται με κόστος Θ(n log n)

bull Άλλοι αλγόριθμοι για το κυρτό περίβλημαndash Σάρωση του Graham DCHull

Επίσης σε Θ(n log n)

29

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Δυαδική Αναζήτηση

Πολύ αποδοτικός αλγόριθμος για αναζήτηση σε ταξινομημένο πίνακα

K

vs

A[0] A[m] A[n-1]

Αν K = A[m] σταμάτησε (επιτυχημένη αναζήτηση Διαφορετικά συνέχισε την αναζήτηση με όμοιο τρόπο στον πίνακα A[0m-1] αν K lt A[m] ή στον A[m+1n-1] αν K gt A[m]

l 0 r n-1

while l r do

m (l+r)2

if K = A[m] return m

else if K lt A[m] r m-1

else l m+1

return -1

30

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Ανάλυση Δυαδικής Αναζήτησης

bull Χρονική αποδοτικότηταndash Χειρότερη περίπτωση Cw (n) = 1 + Cw( n2 ) Cw (1) = 1

ndash Λύση Cw(n) = log2(n+1)

Αυτό είναι πολύ γρήγορο πχ Cw(106) = 20

bull Βέλτιστη μέθοδος για αναζήτηση σε ταξινομημένο πίνακα

bull Περιορισμοί η είσοδος πρέπει να είναι ταξινομημένη και στη μορφή πίνακα όχι πχ συνδεδεμένη λίστα

bull ΟΧΙ καλό παράδειγμα τεχνικής laquoδιαίρει και βασίλευεraquo

bull Υπάρχει ανάλογη τεχνική για τη συνεχή περίπτωση

31

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

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

Τα δυαδικά δένδρα έχουν έτοιμη τη δομή για αλγορίθμους διαίρει και βασίλευε

Πχ κλασικές διασχίσεις (προμεταενδο-διατεταγμένη)

Algorithm Inorder(T)

if T

Inorder(Tleft)

print(root of T)

Inorder(Tright)

ΑποδοτικότηταΘ(n)

32

a

b c

d e

a

b c

d e

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αλγόριθμοι Δυαδικών Δένδρων (2)

33

Άλλο παράδειγμα υπολογισμός ύψους

bull h(T) = maxh(TL) h(TR) + 1 if T and h() = -1

bull Αποδοτικότητα Θ(n)

TL TR

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Σημείωμα Αναφοράς

Copyright Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Ιωάννης Μανωλόπουλος Αναστάσιος Γούναρης laquoΑλγόριθμοι raquo Έκδοση 10 Θεσσαλονίκη 2015 Διαθέσιμο από τη δικτυακή διεύθυνσηhttpeclassauthgrcoursesOCRS417

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons Αναφορά -Μη Εμπορική Χρήση - Παρόμοια Διανομή 40 [1] ή μεταγενέστερη Διεθνής Έκδοση Εξαιρούνται τα αυτοτελή έργα τρίτων πχ φωτογραφίες διαγράμματα κλπ τα οποία εμπεριέχονται σε αυτό και τα οποία αναφέρονται μαζί με τους όρους χρήσης τους στο laquoΣημείωμα Χρήσης Έργων Τρίτωνraquo

Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο

για εμπορική χρήση εφόσον αυτό του ζητηθεί

Ως Μη Εμπορική ορίζεται η χρήση

bull που δεν περιλαμβάνει άμεσο ή έμμεσο οικονομικό όφελος από την χρήση του έργου για το διανομέα του έργου και αδειοδόχο

bull που δεν περιλαμβάνει οικονομική συναλλαγή ως προϋπόθεση για τη χρήση ή πρόσβαση στο έργο

bull που δεν προσπορίζει στο διανομέα του έργου και αδειοδόχο έμμεσο οικονομικό όφελος (πχ διαφημίσεις) από την προβολή του έργου σε διαδικτυακό τόπο

[1] httpcreativecommonsorglicensesby-nc-sa40

Σημείωμα Αδειοδότησης

ΑΡΙΣΤΟΤΕΛΕΙΟ

ΠΑΝΕΠΙΣΤΗΜΙΟ

ΘΕΣΣΑΛΟΝΙΚΗΣ

ΑΝΟΙΚΤΑ

ΑΚΑΔΗΜΑΪΚΑ

ΜΑΘΗΜΑΤΑ

Τέλος ενότητας

Επεξεργασία Ανδρέας ΚοσματόπουλοςΘεσσαλονίκη Αύγουστος 2015

ΑΡΙΣΤΟΤΕΛΕΙΟ

ΠΑΝΕΠΙΣΤΗΜΙΟ

ΘΕΣΣΑΛΟΝΙΚΗΣ

Σημειώματα

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Σημείωμα Ιστορικού Εκδόσεων Έργου

Το παρόν έργο αποτελεί την έκδοση 100

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Διατήρηση Σημειωμάτων

Οποιαδήποτε αναπαραγωγή ή διασκευή του υλικού θα πρέπει να συμπεριλαμβάνει

το Σημείωμα Αναφοράς

το Σημείωμα Αδειοδότησης

τη δήλωση Διατήρησης Σημειωμάτων

το Σημείωμα Χρήσης Έργων Τρίτων (εφόσον υπάρχει)

μαζί με τους συνοδευόμενους υπερσυνδέσμους

Page 20: ΑΛΟΡΙΘΜΟΙ · 2015. 9. 9. · Αλγόριθμος QuickHull (2) •πολογισμός του κυρτού (επάνω)περιβλήματος για το S 1 –ρίσκουμε

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Πολλαπλασιασμός μεγάλων ακεραίων (2)

bull Βασική παρατήρηση

α) 2314 = (21)102 +(24+31)101 + (34) 100

= (21)102 +[(2+3)(1+4)-21-34]101 + (34) 100

bull β) 2135 4014 = 21 40 middot104 + (21 14 + 35 40) middot102 + 35 14

= 21 40 middot104 + [(21+35) (40+14) ndash 2140-3514] middot102 + 35 14

bull Γενικώς a=a1a0 b=b1b0 και ζητείται c=ab c = ab = c210n + c1

10n2

+ c0100 όπου c2=a1b1 c0=a0b0 c1=(a1+a0)(b1+b0)-(c2+c0)

bull Αναδρομική εξίσωση M(n) = 3M(n2) M(1) = 1

bull Αποδοτικότητα M(n) = 3log 2n = nlog 23 asymp n1585

20

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Πολλαπλασιασμός πινάκων αλά Strassen

bull Ο Strassen παρατήρησε [1969] ότι το γινόμενο δύο πινάκων A και B (μεγέθους2nx2n) μπορεί να υπολογισθεί ως εξής

C00 1198620111986210 11986211

=A00 1198600111986010 11986011

lowastB00 1198610111986110 11986111

1198721+1198724minus1198725+1198727 1198723+1198725

1198722+1198724 1198721+1198723minus1198722+1198726

21

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Υποπίνακες του Strassen

bull M1 = (A00 + A11) (B00 + B11)

bull M2 = (A10 + A11) B00

bull M3 = A00 (B01 - B11)

bull M4 = A11 (B10 - B00)

bull M5 = (A00 + A01) B11

bull M6 = (A10 - A00) (B00 + B01)

bull M7 = (A01 - A11) (B10 + B11)

22

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αποδοτικότητα του αλγορίθμου Strassen

bull Αν το n δεν είναι δύναμη του 2 τότε οι πίνακες παραγεμίζονται με μηδενικά

bull Πλήθος πολλαπλασιασμών

bull Πλήθος προσθέσεων

bull Αναδρομή

bull Άλλοι αλγόριθμοι έχουν βελτιώσει αυτό το αποτέλεσμα αλλά είναι ακόμη περισσότεροι σύνθετοι

23

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Το πρόβλημα του πλησιέστερου ζεύγους

bull Πρόβλημα βρες τα πλησιέστερα σημεία μεταξύ n σημείων σε ένα k-διάστατο χώρο

bull Υποθέτουμε ότι τα σημεία ταξινομούνται με βάση τις τιμές των τετμημένων x

bull Διαιρούμε τα σημεία σε δύο υποσύνολα S1 και S2 με n2 σημεία με βάση μία κατακόρυφη γραμμή στο x=c

bull Επιλέγουμε το πλησιέστερο ζεύγος μεταξύ των ζευγών του αριστερού υποσυνόλου (απόσταση d1) μεταξύ των ζευγών του δεξιού υποσυνόλου (απόσταση d2) και το πλησιέστερο ζεύγος με σημεία και από τις δύο πλευρές

bull Πρέπει να εξετάσουμε μία λωρίδα πλάτους 2d όπουd=min[d1d2]

24

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Το πρόβλημα του πλησιέστερου ζεύγους (2)

bull Γεωμετρική εξήγηση

bull Αναδρομή T(n) = 2T(n2) + M(n)

bull Αποδοτικότητα O(n logn)

bull Βελτιστότητα

25

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αλγόριθμος QuickHull

Υπολογίζει το Κυρτό Περίβλημα με έμπνευση από τη Γρήγορη Ταξινόμηση

bull Υποθέτουμε ότι τα σημεία είναι ταξινομημένα ως προς την συντεταγμένη x

bull Προσδιορίζουμε δύο ακραία σημαία P1 και P2 (μέρη του περιβλήματος)

bull Το σύνολο σημείων S διαιρείται σε δύο υποσύνολα S1 και S2

bull Υπολογίζουμε το κυρτό περίβλημα για το S1

bull Ομοίως υπολογίζουμε το κυρτό περίβλημα για το S1

26

P1

P2

Pmax

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αλγόριθμος QuickHull (2)

bull Υπολογισμός του κυρτού (επάνω) περιβλήματος για το S1

ndashΒρίσκουμε το πιο απομακρυσμένο σημείο Pmax από τη γραμμή P1P2

ndash Υπολογίζουμε το περίβλημα για τα σημεία αριστερά της γραμμής P1Pmax

ndash Υπολογίζουμε το περίβλημα για τα σημεία αριστερά της γραμμής PmaxP2

bull Εύρεση του σημείου Pmax

ndash Το Pmax μεγιστοποιεί την επιφάνεια του τριγώνου PmaxP1P2

ndash Σε περίπτωση ισοπαλίας επιλέγεται το Pmax που μεγιστοποιεί τη γωνία PmaxP1P2

bull Τα σημεία μέσα στο τρίγωνο PmaxP1P2 αγνοούνται εφεξής

bull Πως θα βρεθεί γεωμετρικά το σημείο Pmax και τα σημεία στα αριστερά της γραμμής P1Pmax

27

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αλγόριθμος QuickHull (3)

28

bull Πως θα βρεθεί γεωμετρικά το σημείο Pmax και τα σημεία στα αριστερά της γραμμής P1Pmax

ndash Δίνονται τα σημεία P1(x1y1) P2(x2y2) Pmax(xmaxymax)

ndash Το εμβαδόν του τριγώνου είναι μισό του μεγέθους της ορίζουσας

1199091 1199101 11199092 1199102 1119909119898119886119909 119910119898119886119909 1

= x1y2+xmaxy1+x2ymaxndashxmaxy2ndashx2y1-x1ymax

ndash Το πρόσημο της έκφρασης είναι θετικό αν και μόνο αν το σημείο Pmax

είναι στα αριστερά της γραμμής P1P2

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αποδοτικότητα Αλγορίθμου QuickHull (4)

bull Η εύρεση του πλέον απομακρυσμένου σημείου από την ευθεία P1P2 μπορεί να βρεθεί σε γραμμικό χρόνο

bull Έτσι προκύπτει η ίδια πολυπλοκότητα με τη γρήγορη ταξινόμησηndash Χειρότερη περίπτωση Θ(n2)

ndash Μέση περίπτωση Θ(n log n)

bull Αν τα σημεία δεν είναι αρχικά ταξινομημένα στον άξονα x αυτό επιτυγχάνεται με κόστος Θ(n log n)

bull Άλλοι αλγόριθμοι για το κυρτό περίβλημαndash Σάρωση του Graham DCHull

Επίσης σε Θ(n log n)

29

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Δυαδική Αναζήτηση

Πολύ αποδοτικός αλγόριθμος για αναζήτηση σε ταξινομημένο πίνακα

K

vs

A[0] A[m] A[n-1]

Αν K = A[m] σταμάτησε (επιτυχημένη αναζήτηση Διαφορετικά συνέχισε την αναζήτηση με όμοιο τρόπο στον πίνακα A[0m-1] αν K lt A[m] ή στον A[m+1n-1] αν K gt A[m]

l 0 r n-1

while l r do

m (l+r)2

if K = A[m] return m

else if K lt A[m] r m-1

else l m+1

return -1

30

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Ανάλυση Δυαδικής Αναζήτησης

bull Χρονική αποδοτικότηταndash Χειρότερη περίπτωση Cw (n) = 1 + Cw( n2 ) Cw (1) = 1

ndash Λύση Cw(n) = log2(n+1)

Αυτό είναι πολύ γρήγορο πχ Cw(106) = 20

bull Βέλτιστη μέθοδος για αναζήτηση σε ταξινομημένο πίνακα

bull Περιορισμοί η είσοδος πρέπει να είναι ταξινομημένη και στη μορφή πίνακα όχι πχ συνδεδεμένη λίστα

bull ΟΧΙ καλό παράδειγμα τεχνικής laquoδιαίρει και βασίλευεraquo

bull Υπάρχει ανάλογη τεχνική για τη συνεχή περίπτωση

31

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

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

Τα δυαδικά δένδρα έχουν έτοιμη τη δομή για αλγορίθμους διαίρει και βασίλευε

Πχ κλασικές διασχίσεις (προμεταενδο-διατεταγμένη)

Algorithm Inorder(T)

if T

Inorder(Tleft)

print(root of T)

Inorder(Tright)

ΑποδοτικότηταΘ(n)

32

a

b c

d e

a

b c

d e

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αλγόριθμοι Δυαδικών Δένδρων (2)

33

Άλλο παράδειγμα υπολογισμός ύψους

bull h(T) = maxh(TL) h(TR) + 1 if T and h() = -1

bull Αποδοτικότητα Θ(n)

TL TR

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Σημείωμα Αναφοράς

Copyright Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Ιωάννης Μανωλόπουλος Αναστάσιος Γούναρης laquoΑλγόριθμοι raquo Έκδοση 10 Θεσσαλονίκη 2015 Διαθέσιμο από τη δικτυακή διεύθυνσηhttpeclassauthgrcoursesOCRS417

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons Αναφορά -Μη Εμπορική Χρήση - Παρόμοια Διανομή 40 [1] ή μεταγενέστερη Διεθνής Έκδοση Εξαιρούνται τα αυτοτελή έργα τρίτων πχ φωτογραφίες διαγράμματα κλπ τα οποία εμπεριέχονται σε αυτό και τα οποία αναφέρονται μαζί με τους όρους χρήσης τους στο laquoΣημείωμα Χρήσης Έργων Τρίτωνraquo

Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο

για εμπορική χρήση εφόσον αυτό του ζητηθεί

Ως Μη Εμπορική ορίζεται η χρήση

bull που δεν περιλαμβάνει άμεσο ή έμμεσο οικονομικό όφελος από την χρήση του έργου για το διανομέα του έργου και αδειοδόχο

bull που δεν περιλαμβάνει οικονομική συναλλαγή ως προϋπόθεση για τη χρήση ή πρόσβαση στο έργο

bull που δεν προσπορίζει στο διανομέα του έργου και αδειοδόχο έμμεσο οικονομικό όφελος (πχ διαφημίσεις) από την προβολή του έργου σε διαδικτυακό τόπο

[1] httpcreativecommonsorglicensesby-nc-sa40

Σημείωμα Αδειοδότησης

ΑΡΙΣΤΟΤΕΛΕΙΟ

ΠΑΝΕΠΙΣΤΗΜΙΟ

ΘΕΣΣΑΛΟΝΙΚΗΣ

ΑΝΟΙΚΤΑ

ΑΚΑΔΗΜΑΪΚΑ

ΜΑΘΗΜΑΤΑ

Τέλος ενότητας

Επεξεργασία Ανδρέας ΚοσματόπουλοςΘεσσαλονίκη Αύγουστος 2015

ΑΡΙΣΤΟΤΕΛΕΙΟ

ΠΑΝΕΠΙΣΤΗΜΙΟ

ΘΕΣΣΑΛΟΝΙΚΗΣ

Σημειώματα

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Σημείωμα Ιστορικού Εκδόσεων Έργου

Το παρόν έργο αποτελεί την έκδοση 100

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Διατήρηση Σημειωμάτων

Οποιαδήποτε αναπαραγωγή ή διασκευή του υλικού θα πρέπει να συμπεριλαμβάνει

το Σημείωμα Αναφοράς

το Σημείωμα Αδειοδότησης

τη δήλωση Διατήρησης Σημειωμάτων

το Σημείωμα Χρήσης Έργων Τρίτων (εφόσον υπάρχει)

μαζί με τους συνοδευόμενους υπερσυνδέσμους

Page 21: ΑΛΟΡΙΘΜΟΙ · 2015. 9. 9. · Αλγόριθμος QuickHull (2) •πολογισμός του κυρτού (επάνω)περιβλήματος για το S 1 –ρίσκουμε

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Πολλαπλασιασμός πινάκων αλά Strassen

bull Ο Strassen παρατήρησε [1969] ότι το γινόμενο δύο πινάκων A και B (μεγέθους2nx2n) μπορεί να υπολογισθεί ως εξής

C00 1198620111986210 11986211

=A00 1198600111986010 11986011

lowastB00 1198610111986110 11986111

1198721+1198724minus1198725+1198727 1198723+1198725

1198722+1198724 1198721+1198723minus1198722+1198726

21

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Υποπίνακες του Strassen

bull M1 = (A00 + A11) (B00 + B11)

bull M2 = (A10 + A11) B00

bull M3 = A00 (B01 - B11)

bull M4 = A11 (B10 - B00)

bull M5 = (A00 + A01) B11

bull M6 = (A10 - A00) (B00 + B01)

bull M7 = (A01 - A11) (B10 + B11)

22

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αποδοτικότητα του αλγορίθμου Strassen

bull Αν το n δεν είναι δύναμη του 2 τότε οι πίνακες παραγεμίζονται με μηδενικά

bull Πλήθος πολλαπλασιασμών

bull Πλήθος προσθέσεων

bull Αναδρομή

bull Άλλοι αλγόριθμοι έχουν βελτιώσει αυτό το αποτέλεσμα αλλά είναι ακόμη περισσότεροι σύνθετοι

23

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Το πρόβλημα του πλησιέστερου ζεύγους

bull Πρόβλημα βρες τα πλησιέστερα σημεία μεταξύ n σημείων σε ένα k-διάστατο χώρο

bull Υποθέτουμε ότι τα σημεία ταξινομούνται με βάση τις τιμές των τετμημένων x

bull Διαιρούμε τα σημεία σε δύο υποσύνολα S1 και S2 με n2 σημεία με βάση μία κατακόρυφη γραμμή στο x=c

bull Επιλέγουμε το πλησιέστερο ζεύγος μεταξύ των ζευγών του αριστερού υποσυνόλου (απόσταση d1) μεταξύ των ζευγών του δεξιού υποσυνόλου (απόσταση d2) και το πλησιέστερο ζεύγος με σημεία και από τις δύο πλευρές

bull Πρέπει να εξετάσουμε μία λωρίδα πλάτους 2d όπουd=min[d1d2]

24

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Το πρόβλημα του πλησιέστερου ζεύγους (2)

bull Γεωμετρική εξήγηση

bull Αναδρομή T(n) = 2T(n2) + M(n)

bull Αποδοτικότητα O(n logn)

bull Βελτιστότητα

25

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αλγόριθμος QuickHull

Υπολογίζει το Κυρτό Περίβλημα με έμπνευση από τη Γρήγορη Ταξινόμηση

bull Υποθέτουμε ότι τα σημεία είναι ταξινομημένα ως προς την συντεταγμένη x

bull Προσδιορίζουμε δύο ακραία σημαία P1 και P2 (μέρη του περιβλήματος)

bull Το σύνολο σημείων S διαιρείται σε δύο υποσύνολα S1 και S2

bull Υπολογίζουμε το κυρτό περίβλημα για το S1

bull Ομοίως υπολογίζουμε το κυρτό περίβλημα για το S1

26

P1

P2

Pmax

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αλγόριθμος QuickHull (2)

bull Υπολογισμός του κυρτού (επάνω) περιβλήματος για το S1

ndashΒρίσκουμε το πιο απομακρυσμένο σημείο Pmax από τη γραμμή P1P2

ndash Υπολογίζουμε το περίβλημα για τα σημεία αριστερά της γραμμής P1Pmax

ndash Υπολογίζουμε το περίβλημα για τα σημεία αριστερά της γραμμής PmaxP2

bull Εύρεση του σημείου Pmax

ndash Το Pmax μεγιστοποιεί την επιφάνεια του τριγώνου PmaxP1P2

ndash Σε περίπτωση ισοπαλίας επιλέγεται το Pmax που μεγιστοποιεί τη γωνία PmaxP1P2

bull Τα σημεία μέσα στο τρίγωνο PmaxP1P2 αγνοούνται εφεξής

bull Πως θα βρεθεί γεωμετρικά το σημείο Pmax και τα σημεία στα αριστερά της γραμμής P1Pmax

27

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αλγόριθμος QuickHull (3)

28

bull Πως θα βρεθεί γεωμετρικά το σημείο Pmax και τα σημεία στα αριστερά της γραμμής P1Pmax

ndash Δίνονται τα σημεία P1(x1y1) P2(x2y2) Pmax(xmaxymax)

ndash Το εμβαδόν του τριγώνου είναι μισό του μεγέθους της ορίζουσας

1199091 1199101 11199092 1199102 1119909119898119886119909 119910119898119886119909 1

= x1y2+xmaxy1+x2ymaxndashxmaxy2ndashx2y1-x1ymax

ndash Το πρόσημο της έκφρασης είναι θετικό αν και μόνο αν το σημείο Pmax

είναι στα αριστερά της γραμμής P1P2

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αποδοτικότητα Αλγορίθμου QuickHull (4)

bull Η εύρεση του πλέον απομακρυσμένου σημείου από την ευθεία P1P2 μπορεί να βρεθεί σε γραμμικό χρόνο

bull Έτσι προκύπτει η ίδια πολυπλοκότητα με τη γρήγορη ταξινόμησηndash Χειρότερη περίπτωση Θ(n2)

ndash Μέση περίπτωση Θ(n log n)

bull Αν τα σημεία δεν είναι αρχικά ταξινομημένα στον άξονα x αυτό επιτυγχάνεται με κόστος Θ(n log n)

bull Άλλοι αλγόριθμοι για το κυρτό περίβλημαndash Σάρωση του Graham DCHull

Επίσης σε Θ(n log n)

29

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Δυαδική Αναζήτηση

Πολύ αποδοτικός αλγόριθμος για αναζήτηση σε ταξινομημένο πίνακα

K

vs

A[0] A[m] A[n-1]

Αν K = A[m] σταμάτησε (επιτυχημένη αναζήτηση Διαφορετικά συνέχισε την αναζήτηση με όμοιο τρόπο στον πίνακα A[0m-1] αν K lt A[m] ή στον A[m+1n-1] αν K gt A[m]

l 0 r n-1

while l r do

m (l+r)2

if K = A[m] return m

else if K lt A[m] r m-1

else l m+1

return -1

30

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Ανάλυση Δυαδικής Αναζήτησης

bull Χρονική αποδοτικότηταndash Χειρότερη περίπτωση Cw (n) = 1 + Cw( n2 ) Cw (1) = 1

ndash Λύση Cw(n) = log2(n+1)

Αυτό είναι πολύ γρήγορο πχ Cw(106) = 20

bull Βέλτιστη μέθοδος για αναζήτηση σε ταξινομημένο πίνακα

bull Περιορισμοί η είσοδος πρέπει να είναι ταξινομημένη και στη μορφή πίνακα όχι πχ συνδεδεμένη λίστα

bull ΟΧΙ καλό παράδειγμα τεχνικής laquoδιαίρει και βασίλευεraquo

bull Υπάρχει ανάλογη τεχνική για τη συνεχή περίπτωση

31

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

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

Τα δυαδικά δένδρα έχουν έτοιμη τη δομή για αλγορίθμους διαίρει και βασίλευε

Πχ κλασικές διασχίσεις (προμεταενδο-διατεταγμένη)

Algorithm Inorder(T)

if T

Inorder(Tleft)

print(root of T)

Inorder(Tright)

ΑποδοτικότηταΘ(n)

32

a

b c

d e

a

b c

d e

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αλγόριθμοι Δυαδικών Δένδρων (2)

33

Άλλο παράδειγμα υπολογισμός ύψους

bull h(T) = maxh(TL) h(TR) + 1 if T and h() = -1

bull Αποδοτικότητα Θ(n)

TL TR

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Σημείωμα Αναφοράς

Copyright Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Ιωάννης Μανωλόπουλος Αναστάσιος Γούναρης laquoΑλγόριθμοι raquo Έκδοση 10 Θεσσαλονίκη 2015 Διαθέσιμο από τη δικτυακή διεύθυνσηhttpeclassauthgrcoursesOCRS417

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons Αναφορά -Μη Εμπορική Χρήση - Παρόμοια Διανομή 40 [1] ή μεταγενέστερη Διεθνής Έκδοση Εξαιρούνται τα αυτοτελή έργα τρίτων πχ φωτογραφίες διαγράμματα κλπ τα οποία εμπεριέχονται σε αυτό και τα οποία αναφέρονται μαζί με τους όρους χρήσης τους στο laquoΣημείωμα Χρήσης Έργων Τρίτωνraquo

Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο

για εμπορική χρήση εφόσον αυτό του ζητηθεί

Ως Μη Εμπορική ορίζεται η χρήση

bull που δεν περιλαμβάνει άμεσο ή έμμεσο οικονομικό όφελος από την χρήση του έργου για το διανομέα του έργου και αδειοδόχο

bull που δεν περιλαμβάνει οικονομική συναλλαγή ως προϋπόθεση για τη χρήση ή πρόσβαση στο έργο

bull που δεν προσπορίζει στο διανομέα του έργου και αδειοδόχο έμμεσο οικονομικό όφελος (πχ διαφημίσεις) από την προβολή του έργου σε διαδικτυακό τόπο

[1] httpcreativecommonsorglicensesby-nc-sa40

Σημείωμα Αδειοδότησης

ΑΡΙΣΤΟΤΕΛΕΙΟ

ΠΑΝΕΠΙΣΤΗΜΙΟ

ΘΕΣΣΑΛΟΝΙΚΗΣ

ΑΝΟΙΚΤΑ

ΑΚΑΔΗΜΑΪΚΑ

ΜΑΘΗΜΑΤΑ

Τέλος ενότητας

Επεξεργασία Ανδρέας ΚοσματόπουλοςΘεσσαλονίκη Αύγουστος 2015

ΑΡΙΣΤΟΤΕΛΕΙΟ

ΠΑΝΕΠΙΣΤΗΜΙΟ

ΘΕΣΣΑΛΟΝΙΚΗΣ

Σημειώματα

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Σημείωμα Ιστορικού Εκδόσεων Έργου

Το παρόν έργο αποτελεί την έκδοση 100

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Διατήρηση Σημειωμάτων

Οποιαδήποτε αναπαραγωγή ή διασκευή του υλικού θα πρέπει να συμπεριλαμβάνει

το Σημείωμα Αναφοράς

το Σημείωμα Αδειοδότησης

τη δήλωση Διατήρησης Σημειωμάτων

το Σημείωμα Χρήσης Έργων Τρίτων (εφόσον υπάρχει)

μαζί με τους συνοδευόμενους υπερσυνδέσμους

Page 22: ΑΛΟΡΙΘΜΟΙ · 2015. 9. 9. · Αλγόριθμος QuickHull (2) •πολογισμός του κυρτού (επάνω)περιβλήματος για το S 1 –ρίσκουμε

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Υποπίνακες του Strassen

bull M1 = (A00 + A11) (B00 + B11)

bull M2 = (A10 + A11) B00

bull M3 = A00 (B01 - B11)

bull M4 = A11 (B10 - B00)

bull M5 = (A00 + A01) B11

bull M6 = (A10 - A00) (B00 + B01)

bull M7 = (A01 - A11) (B10 + B11)

22

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αποδοτικότητα του αλγορίθμου Strassen

bull Αν το n δεν είναι δύναμη του 2 τότε οι πίνακες παραγεμίζονται με μηδενικά

bull Πλήθος πολλαπλασιασμών

bull Πλήθος προσθέσεων

bull Αναδρομή

bull Άλλοι αλγόριθμοι έχουν βελτιώσει αυτό το αποτέλεσμα αλλά είναι ακόμη περισσότεροι σύνθετοι

23

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Το πρόβλημα του πλησιέστερου ζεύγους

bull Πρόβλημα βρες τα πλησιέστερα σημεία μεταξύ n σημείων σε ένα k-διάστατο χώρο

bull Υποθέτουμε ότι τα σημεία ταξινομούνται με βάση τις τιμές των τετμημένων x

bull Διαιρούμε τα σημεία σε δύο υποσύνολα S1 και S2 με n2 σημεία με βάση μία κατακόρυφη γραμμή στο x=c

bull Επιλέγουμε το πλησιέστερο ζεύγος μεταξύ των ζευγών του αριστερού υποσυνόλου (απόσταση d1) μεταξύ των ζευγών του δεξιού υποσυνόλου (απόσταση d2) και το πλησιέστερο ζεύγος με σημεία και από τις δύο πλευρές

bull Πρέπει να εξετάσουμε μία λωρίδα πλάτους 2d όπουd=min[d1d2]

24

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Το πρόβλημα του πλησιέστερου ζεύγους (2)

bull Γεωμετρική εξήγηση

bull Αναδρομή T(n) = 2T(n2) + M(n)

bull Αποδοτικότητα O(n logn)

bull Βελτιστότητα

25

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αλγόριθμος QuickHull

Υπολογίζει το Κυρτό Περίβλημα με έμπνευση από τη Γρήγορη Ταξινόμηση

bull Υποθέτουμε ότι τα σημεία είναι ταξινομημένα ως προς την συντεταγμένη x

bull Προσδιορίζουμε δύο ακραία σημαία P1 και P2 (μέρη του περιβλήματος)

bull Το σύνολο σημείων S διαιρείται σε δύο υποσύνολα S1 και S2

bull Υπολογίζουμε το κυρτό περίβλημα για το S1

bull Ομοίως υπολογίζουμε το κυρτό περίβλημα για το S1

26

P1

P2

Pmax

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αλγόριθμος QuickHull (2)

bull Υπολογισμός του κυρτού (επάνω) περιβλήματος για το S1

ndashΒρίσκουμε το πιο απομακρυσμένο σημείο Pmax από τη γραμμή P1P2

ndash Υπολογίζουμε το περίβλημα για τα σημεία αριστερά της γραμμής P1Pmax

ndash Υπολογίζουμε το περίβλημα για τα σημεία αριστερά της γραμμής PmaxP2

bull Εύρεση του σημείου Pmax

ndash Το Pmax μεγιστοποιεί την επιφάνεια του τριγώνου PmaxP1P2

ndash Σε περίπτωση ισοπαλίας επιλέγεται το Pmax που μεγιστοποιεί τη γωνία PmaxP1P2

bull Τα σημεία μέσα στο τρίγωνο PmaxP1P2 αγνοούνται εφεξής

bull Πως θα βρεθεί γεωμετρικά το σημείο Pmax και τα σημεία στα αριστερά της γραμμής P1Pmax

27

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αλγόριθμος QuickHull (3)

28

bull Πως θα βρεθεί γεωμετρικά το σημείο Pmax και τα σημεία στα αριστερά της γραμμής P1Pmax

ndash Δίνονται τα σημεία P1(x1y1) P2(x2y2) Pmax(xmaxymax)

ndash Το εμβαδόν του τριγώνου είναι μισό του μεγέθους της ορίζουσας

1199091 1199101 11199092 1199102 1119909119898119886119909 119910119898119886119909 1

= x1y2+xmaxy1+x2ymaxndashxmaxy2ndashx2y1-x1ymax

ndash Το πρόσημο της έκφρασης είναι θετικό αν και μόνο αν το σημείο Pmax

είναι στα αριστερά της γραμμής P1P2

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αποδοτικότητα Αλγορίθμου QuickHull (4)

bull Η εύρεση του πλέον απομακρυσμένου σημείου από την ευθεία P1P2 μπορεί να βρεθεί σε γραμμικό χρόνο

bull Έτσι προκύπτει η ίδια πολυπλοκότητα με τη γρήγορη ταξινόμησηndash Χειρότερη περίπτωση Θ(n2)

ndash Μέση περίπτωση Θ(n log n)

bull Αν τα σημεία δεν είναι αρχικά ταξινομημένα στον άξονα x αυτό επιτυγχάνεται με κόστος Θ(n log n)

bull Άλλοι αλγόριθμοι για το κυρτό περίβλημαndash Σάρωση του Graham DCHull

Επίσης σε Θ(n log n)

29

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Δυαδική Αναζήτηση

Πολύ αποδοτικός αλγόριθμος για αναζήτηση σε ταξινομημένο πίνακα

K

vs

A[0] A[m] A[n-1]

Αν K = A[m] σταμάτησε (επιτυχημένη αναζήτηση Διαφορετικά συνέχισε την αναζήτηση με όμοιο τρόπο στον πίνακα A[0m-1] αν K lt A[m] ή στον A[m+1n-1] αν K gt A[m]

l 0 r n-1

while l r do

m (l+r)2

if K = A[m] return m

else if K lt A[m] r m-1

else l m+1

return -1

30

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Ανάλυση Δυαδικής Αναζήτησης

bull Χρονική αποδοτικότηταndash Χειρότερη περίπτωση Cw (n) = 1 + Cw( n2 ) Cw (1) = 1

ndash Λύση Cw(n) = log2(n+1)

Αυτό είναι πολύ γρήγορο πχ Cw(106) = 20

bull Βέλτιστη μέθοδος για αναζήτηση σε ταξινομημένο πίνακα

bull Περιορισμοί η είσοδος πρέπει να είναι ταξινομημένη και στη μορφή πίνακα όχι πχ συνδεδεμένη λίστα

bull ΟΧΙ καλό παράδειγμα τεχνικής laquoδιαίρει και βασίλευεraquo

bull Υπάρχει ανάλογη τεχνική για τη συνεχή περίπτωση

31

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

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

Τα δυαδικά δένδρα έχουν έτοιμη τη δομή για αλγορίθμους διαίρει και βασίλευε

Πχ κλασικές διασχίσεις (προμεταενδο-διατεταγμένη)

Algorithm Inorder(T)

if T

Inorder(Tleft)

print(root of T)

Inorder(Tright)

ΑποδοτικότηταΘ(n)

32

a

b c

d e

a

b c

d e

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αλγόριθμοι Δυαδικών Δένδρων (2)

33

Άλλο παράδειγμα υπολογισμός ύψους

bull h(T) = maxh(TL) h(TR) + 1 if T and h() = -1

bull Αποδοτικότητα Θ(n)

TL TR

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Σημείωμα Αναφοράς

Copyright Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Ιωάννης Μανωλόπουλος Αναστάσιος Γούναρης laquoΑλγόριθμοι raquo Έκδοση 10 Θεσσαλονίκη 2015 Διαθέσιμο από τη δικτυακή διεύθυνσηhttpeclassauthgrcoursesOCRS417

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons Αναφορά -Μη Εμπορική Χρήση - Παρόμοια Διανομή 40 [1] ή μεταγενέστερη Διεθνής Έκδοση Εξαιρούνται τα αυτοτελή έργα τρίτων πχ φωτογραφίες διαγράμματα κλπ τα οποία εμπεριέχονται σε αυτό και τα οποία αναφέρονται μαζί με τους όρους χρήσης τους στο laquoΣημείωμα Χρήσης Έργων Τρίτωνraquo

Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο

για εμπορική χρήση εφόσον αυτό του ζητηθεί

Ως Μη Εμπορική ορίζεται η χρήση

bull που δεν περιλαμβάνει άμεσο ή έμμεσο οικονομικό όφελος από την χρήση του έργου για το διανομέα του έργου και αδειοδόχο

bull που δεν περιλαμβάνει οικονομική συναλλαγή ως προϋπόθεση για τη χρήση ή πρόσβαση στο έργο

bull που δεν προσπορίζει στο διανομέα του έργου και αδειοδόχο έμμεσο οικονομικό όφελος (πχ διαφημίσεις) από την προβολή του έργου σε διαδικτυακό τόπο

[1] httpcreativecommonsorglicensesby-nc-sa40

Σημείωμα Αδειοδότησης

ΑΡΙΣΤΟΤΕΛΕΙΟ

ΠΑΝΕΠΙΣΤΗΜΙΟ

ΘΕΣΣΑΛΟΝΙΚΗΣ

ΑΝΟΙΚΤΑ

ΑΚΑΔΗΜΑΪΚΑ

ΜΑΘΗΜΑΤΑ

Τέλος ενότητας

Επεξεργασία Ανδρέας ΚοσματόπουλοςΘεσσαλονίκη Αύγουστος 2015

ΑΡΙΣΤΟΤΕΛΕΙΟ

ΠΑΝΕΠΙΣΤΗΜΙΟ

ΘΕΣΣΑΛΟΝΙΚΗΣ

Σημειώματα

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Σημείωμα Ιστορικού Εκδόσεων Έργου

Το παρόν έργο αποτελεί την έκδοση 100

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Διατήρηση Σημειωμάτων

Οποιαδήποτε αναπαραγωγή ή διασκευή του υλικού θα πρέπει να συμπεριλαμβάνει

το Σημείωμα Αναφοράς

το Σημείωμα Αδειοδότησης

τη δήλωση Διατήρησης Σημειωμάτων

το Σημείωμα Χρήσης Έργων Τρίτων (εφόσον υπάρχει)

μαζί με τους συνοδευόμενους υπερσυνδέσμους

Page 23: ΑΛΟΡΙΘΜΟΙ · 2015. 9. 9. · Αλγόριθμος QuickHull (2) •πολογισμός του κυρτού (επάνω)περιβλήματος για το S 1 –ρίσκουμε

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αποδοτικότητα του αλγορίθμου Strassen

bull Αν το n δεν είναι δύναμη του 2 τότε οι πίνακες παραγεμίζονται με μηδενικά

bull Πλήθος πολλαπλασιασμών

bull Πλήθος προσθέσεων

bull Αναδρομή

bull Άλλοι αλγόριθμοι έχουν βελτιώσει αυτό το αποτέλεσμα αλλά είναι ακόμη περισσότεροι σύνθετοι

23

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Το πρόβλημα του πλησιέστερου ζεύγους

bull Πρόβλημα βρες τα πλησιέστερα σημεία μεταξύ n σημείων σε ένα k-διάστατο χώρο

bull Υποθέτουμε ότι τα σημεία ταξινομούνται με βάση τις τιμές των τετμημένων x

bull Διαιρούμε τα σημεία σε δύο υποσύνολα S1 και S2 με n2 σημεία με βάση μία κατακόρυφη γραμμή στο x=c

bull Επιλέγουμε το πλησιέστερο ζεύγος μεταξύ των ζευγών του αριστερού υποσυνόλου (απόσταση d1) μεταξύ των ζευγών του δεξιού υποσυνόλου (απόσταση d2) και το πλησιέστερο ζεύγος με σημεία και από τις δύο πλευρές

bull Πρέπει να εξετάσουμε μία λωρίδα πλάτους 2d όπουd=min[d1d2]

24

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Το πρόβλημα του πλησιέστερου ζεύγους (2)

bull Γεωμετρική εξήγηση

bull Αναδρομή T(n) = 2T(n2) + M(n)

bull Αποδοτικότητα O(n logn)

bull Βελτιστότητα

25

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αλγόριθμος QuickHull

Υπολογίζει το Κυρτό Περίβλημα με έμπνευση από τη Γρήγορη Ταξινόμηση

bull Υποθέτουμε ότι τα σημεία είναι ταξινομημένα ως προς την συντεταγμένη x

bull Προσδιορίζουμε δύο ακραία σημαία P1 και P2 (μέρη του περιβλήματος)

bull Το σύνολο σημείων S διαιρείται σε δύο υποσύνολα S1 και S2

bull Υπολογίζουμε το κυρτό περίβλημα για το S1

bull Ομοίως υπολογίζουμε το κυρτό περίβλημα για το S1

26

P1

P2

Pmax

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αλγόριθμος QuickHull (2)

bull Υπολογισμός του κυρτού (επάνω) περιβλήματος για το S1

ndashΒρίσκουμε το πιο απομακρυσμένο σημείο Pmax από τη γραμμή P1P2

ndash Υπολογίζουμε το περίβλημα για τα σημεία αριστερά της γραμμής P1Pmax

ndash Υπολογίζουμε το περίβλημα για τα σημεία αριστερά της γραμμής PmaxP2

bull Εύρεση του σημείου Pmax

ndash Το Pmax μεγιστοποιεί την επιφάνεια του τριγώνου PmaxP1P2

ndash Σε περίπτωση ισοπαλίας επιλέγεται το Pmax που μεγιστοποιεί τη γωνία PmaxP1P2

bull Τα σημεία μέσα στο τρίγωνο PmaxP1P2 αγνοούνται εφεξής

bull Πως θα βρεθεί γεωμετρικά το σημείο Pmax και τα σημεία στα αριστερά της γραμμής P1Pmax

27

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αλγόριθμος QuickHull (3)

28

bull Πως θα βρεθεί γεωμετρικά το σημείο Pmax και τα σημεία στα αριστερά της γραμμής P1Pmax

ndash Δίνονται τα σημεία P1(x1y1) P2(x2y2) Pmax(xmaxymax)

ndash Το εμβαδόν του τριγώνου είναι μισό του μεγέθους της ορίζουσας

1199091 1199101 11199092 1199102 1119909119898119886119909 119910119898119886119909 1

= x1y2+xmaxy1+x2ymaxndashxmaxy2ndashx2y1-x1ymax

ndash Το πρόσημο της έκφρασης είναι θετικό αν και μόνο αν το σημείο Pmax

είναι στα αριστερά της γραμμής P1P2

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αποδοτικότητα Αλγορίθμου QuickHull (4)

bull Η εύρεση του πλέον απομακρυσμένου σημείου από την ευθεία P1P2 μπορεί να βρεθεί σε γραμμικό χρόνο

bull Έτσι προκύπτει η ίδια πολυπλοκότητα με τη γρήγορη ταξινόμησηndash Χειρότερη περίπτωση Θ(n2)

ndash Μέση περίπτωση Θ(n log n)

bull Αν τα σημεία δεν είναι αρχικά ταξινομημένα στον άξονα x αυτό επιτυγχάνεται με κόστος Θ(n log n)

bull Άλλοι αλγόριθμοι για το κυρτό περίβλημαndash Σάρωση του Graham DCHull

Επίσης σε Θ(n log n)

29

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Δυαδική Αναζήτηση

Πολύ αποδοτικός αλγόριθμος για αναζήτηση σε ταξινομημένο πίνακα

K

vs

A[0] A[m] A[n-1]

Αν K = A[m] σταμάτησε (επιτυχημένη αναζήτηση Διαφορετικά συνέχισε την αναζήτηση με όμοιο τρόπο στον πίνακα A[0m-1] αν K lt A[m] ή στον A[m+1n-1] αν K gt A[m]

l 0 r n-1

while l r do

m (l+r)2

if K = A[m] return m

else if K lt A[m] r m-1

else l m+1

return -1

30

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Ανάλυση Δυαδικής Αναζήτησης

bull Χρονική αποδοτικότηταndash Χειρότερη περίπτωση Cw (n) = 1 + Cw( n2 ) Cw (1) = 1

ndash Λύση Cw(n) = log2(n+1)

Αυτό είναι πολύ γρήγορο πχ Cw(106) = 20

bull Βέλτιστη μέθοδος για αναζήτηση σε ταξινομημένο πίνακα

bull Περιορισμοί η είσοδος πρέπει να είναι ταξινομημένη και στη μορφή πίνακα όχι πχ συνδεδεμένη λίστα

bull ΟΧΙ καλό παράδειγμα τεχνικής laquoδιαίρει και βασίλευεraquo

bull Υπάρχει ανάλογη τεχνική για τη συνεχή περίπτωση

31

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

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

Τα δυαδικά δένδρα έχουν έτοιμη τη δομή για αλγορίθμους διαίρει και βασίλευε

Πχ κλασικές διασχίσεις (προμεταενδο-διατεταγμένη)

Algorithm Inorder(T)

if T

Inorder(Tleft)

print(root of T)

Inorder(Tright)

ΑποδοτικότηταΘ(n)

32

a

b c

d e

a

b c

d e

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αλγόριθμοι Δυαδικών Δένδρων (2)

33

Άλλο παράδειγμα υπολογισμός ύψους

bull h(T) = maxh(TL) h(TR) + 1 if T and h() = -1

bull Αποδοτικότητα Θ(n)

TL TR

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Σημείωμα Αναφοράς

Copyright Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Ιωάννης Μανωλόπουλος Αναστάσιος Γούναρης laquoΑλγόριθμοι raquo Έκδοση 10 Θεσσαλονίκη 2015 Διαθέσιμο από τη δικτυακή διεύθυνσηhttpeclassauthgrcoursesOCRS417

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons Αναφορά -Μη Εμπορική Χρήση - Παρόμοια Διανομή 40 [1] ή μεταγενέστερη Διεθνής Έκδοση Εξαιρούνται τα αυτοτελή έργα τρίτων πχ φωτογραφίες διαγράμματα κλπ τα οποία εμπεριέχονται σε αυτό και τα οποία αναφέρονται μαζί με τους όρους χρήσης τους στο laquoΣημείωμα Χρήσης Έργων Τρίτωνraquo

Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο

για εμπορική χρήση εφόσον αυτό του ζητηθεί

Ως Μη Εμπορική ορίζεται η χρήση

bull που δεν περιλαμβάνει άμεσο ή έμμεσο οικονομικό όφελος από την χρήση του έργου για το διανομέα του έργου και αδειοδόχο

bull που δεν περιλαμβάνει οικονομική συναλλαγή ως προϋπόθεση για τη χρήση ή πρόσβαση στο έργο

bull που δεν προσπορίζει στο διανομέα του έργου και αδειοδόχο έμμεσο οικονομικό όφελος (πχ διαφημίσεις) από την προβολή του έργου σε διαδικτυακό τόπο

[1] httpcreativecommonsorglicensesby-nc-sa40

Σημείωμα Αδειοδότησης

ΑΡΙΣΤΟΤΕΛΕΙΟ

ΠΑΝΕΠΙΣΤΗΜΙΟ

ΘΕΣΣΑΛΟΝΙΚΗΣ

ΑΝΟΙΚΤΑ

ΑΚΑΔΗΜΑΪΚΑ

ΜΑΘΗΜΑΤΑ

Τέλος ενότητας

Επεξεργασία Ανδρέας ΚοσματόπουλοςΘεσσαλονίκη Αύγουστος 2015

ΑΡΙΣΤΟΤΕΛΕΙΟ

ΠΑΝΕΠΙΣΤΗΜΙΟ

ΘΕΣΣΑΛΟΝΙΚΗΣ

Σημειώματα

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Σημείωμα Ιστορικού Εκδόσεων Έργου

Το παρόν έργο αποτελεί την έκδοση 100

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Διατήρηση Σημειωμάτων

Οποιαδήποτε αναπαραγωγή ή διασκευή του υλικού θα πρέπει να συμπεριλαμβάνει

το Σημείωμα Αναφοράς

το Σημείωμα Αδειοδότησης

τη δήλωση Διατήρησης Σημειωμάτων

το Σημείωμα Χρήσης Έργων Τρίτων (εφόσον υπάρχει)

μαζί με τους συνοδευόμενους υπερσυνδέσμους

Page 24: ΑΛΟΡΙΘΜΟΙ · 2015. 9. 9. · Αλγόριθμος QuickHull (2) •πολογισμός του κυρτού (επάνω)περιβλήματος για το S 1 –ρίσκουμε

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Το πρόβλημα του πλησιέστερου ζεύγους

bull Πρόβλημα βρες τα πλησιέστερα σημεία μεταξύ n σημείων σε ένα k-διάστατο χώρο

bull Υποθέτουμε ότι τα σημεία ταξινομούνται με βάση τις τιμές των τετμημένων x

bull Διαιρούμε τα σημεία σε δύο υποσύνολα S1 και S2 με n2 σημεία με βάση μία κατακόρυφη γραμμή στο x=c

bull Επιλέγουμε το πλησιέστερο ζεύγος μεταξύ των ζευγών του αριστερού υποσυνόλου (απόσταση d1) μεταξύ των ζευγών του δεξιού υποσυνόλου (απόσταση d2) και το πλησιέστερο ζεύγος με σημεία και από τις δύο πλευρές

bull Πρέπει να εξετάσουμε μία λωρίδα πλάτους 2d όπουd=min[d1d2]

24

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Το πρόβλημα του πλησιέστερου ζεύγους (2)

bull Γεωμετρική εξήγηση

bull Αναδρομή T(n) = 2T(n2) + M(n)

bull Αποδοτικότητα O(n logn)

bull Βελτιστότητα

25

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αλγόριθμος QuickHull

Υπολογίζει το Κυρτό Περίβλημα με έμπνευση από τη Γρήγορη Ταξινόμηση

bull Υποθέτουμε ότι τα σημεία είναι ταξινομημένα ως προς την συντεταγμένη x

bull Προσδιορίζουμε δύο ακραία σημαία P1 και P2 (μέρη του περιβλήματος)

bull Το σύνολο σημείων S διαιρείται σε δύο υποσύνολα S1 και S2

bull Υπολογίζουμε το κυρτό περίβλημα για το S1

bull Ομοίως υπολογίζουμε το κυρτό περίβλημα για το S1

26

P1

P2

Pmax

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αλγόριθμος QuickHull (2)

bull Υπολογισμός του κυρτού (επάνω) περιβλήματος για το S1

ndashΒρίσκουμε το πιο απομακρυσμένο σημείο Pmax από τη γραμμή P1P2

ndash Υπολογίζουμε το περίβλημα για τα σημεία αριστερά της γραμμής P1Pmax

ndash Υπολογίζουμε το περίβλημα για τα σημεία αριστερά της γραμμής PmaxP2

bull Εύρεση του σημείου Pmax

ndash Το Pmax μεγιστοποιεί την επιφάνεια του τριγώνου PmaxP1P2

ndash Σε περίπτωση ισοπαλίας επιλέγεται το Pmax που μεγιστοποιεί τη γωνία PmaxP1P2

bull Τα σημεία μέσα στο τρίγωνο PmaxP1P2 αγνοούνται εφεξής

bull Πως θα βρεθεί γεωμετρικά το σημείο Pmax και τα σημεία στα αριστερά της γραμμής P1Pmax

27

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αλγόριθμος QuickHull (3)

28

bull Πως θα βρεθεί γεωμετρικά το σημείο Pmax και τα σημεία στα αριστερά της γραμμής P1Pmax

ndash Δίνονται τα σημεία P1(x1y1) P2(x2y2) Pmax(xmaxymax)

ndash Το εμβαδόν του τριγώνου είναι μισό του μεγέθους της ορίζουσας

1199091 1199101 11199092 1199102 1119909119898119886119909 119910119898119886119909 1

= x1y2+xmaxy1+x2ymaxndashxmaxy2ndashx2y1-x1ymax

ndash Το πρόσημο της έκφρασης είναι θετικό αν και μόνο αν το σημείο Pmax

είναι στα αριστερά της γραμμής P1P2

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αποδοτικότητα Αλγορίθμου QuickHull (4)

bull Η εύρεση του πλέον απομακρυσμένου σημείου από την ευθεία P1P2 μπορεί να βρεθεί σε γραμμικό χρόνο

bull Έτσι προκύπτει η ίδια πολυπλοκότητα με τη γρήγορη ταξινόμησηndash Χειρότερη περίπτωση Θ(n2)

ndash Μέση περίπτωση Θ(n log n)

bull Αν τα σημεία δεν είναι αρχικά ταξινομημένα στον άξονα x αυτό επιτυγχάνεται με κόστος Θ(n log n)

bull Άλλοι αλγόριθμοι για το κυρτό περίβλημαndash Σάρωση του Graham DCHull

Επίσης σε Θ(n log n)

29

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Δυαδική Αναζήτηση

Πολύ αποδοτικός αλγόριθμος για αναζήτηση σε ταξινομημένο πίνακα

K

vs

A[0] A[m] A[n-1]

Αν K = A[m] σταμάτησε (επιτυχημένη αναζήτηση Διαφορετικά συνέχισε την αναζήτηση με όμοιο τρόπο στον πίνακα A[0m-1] αν K lt A[m] ή στον A[m+1n-1] αν K gt A[m]

l 0 r n-1

while l r do

m (l+r)2

if K = A[m] return m

else if K lt A[m] r m-1

else l m+1

return -1

30

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Ανάλυση Δυαδικής Αναζήτησης

bull Χρονική αποδοτικότηταndash Χειρότερη περίπτωση Cw (n) = 1 + Cw( n2 ) Cw (1) = 1

ndash Λύση Cw(n) = log2(n+1)

Αυτό είναι πολύ γρήγορο πχ Cw(106) = 20

bull Βέλτιστη μέθοδος για αναζήτηση σε ταξινομημένο πίνακα

bull Περιορισμοί η είσοδος πρέπει να είναι ταξινομημένη και στη μορφή πίνακα όχι πχ συνδεδεμένη λίστα

bull ΟΧΙ καλό παράδειγμα τεχνικής laquoδιαίρει και βασίλευεraquo

bull Υπάρχει ανάλογη τεχνική για τη συνεχή περίπτωση

31

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

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

Τα δυαδικά δένδρα έχουν έτοιμη τη δομή για αλγορίθμους διαίρει και βασίλευε

Πχ κλασικές διασχίσεις (προμεταενδο-διατεταγμένη)

Algorithm Inorder(T)

if T

Inorder(Tleft)

print(root of T)

Inorder(Tright)

ΑποδοτικότηταΘ(n)

32

a

b c

d e

a

b c

d e

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αλγόριθμοι Δυαδικών Δένδρων (2)

33

Άλλο παράδειγμα υπολογισμός ύψους

bull h(T) = maxh(TL) h(TR) + 1 if T and h() = -1

bull Αποδοτικότητα Θ(n)

TL TR

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Σημείωμα Αναφοράς

Copyright Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Ιωάννης Μανωλόπουλος Αναστάσιος Γούναρης laquoΑλγόριθμοι raquo Έκδοση 10 Θεσσαλονίκη 2015 Διαθέσιμο από τη δικτυακή διεύθυνσηhttpeclassauthgrcoursesOCRS417

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons Αναφορά -Μη Εμπορική Χρήση - Παρόμοια Διανομή 40 [1] ή μεταγενέστερη Διεθνής Έκδοση Εξαιρούνται τα αυτοτελή έργα τρίτων πχ φωτογραφίες διαγράμματα κλπ τα οποία εμπεριέχονται σε αυτό και τα οποία αναφέρονται μαζί με τους όρους χρήσης τους στο laquoΣημείωμα Χρήσης Έργων Τρίτωνraquo

Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο

για εμπορική χρήση εφόσον αυτό του ζητηθεί

Ως Μη Εμπορική ορίζεται η χρήση

bull που δεν περιλαμβάνει άμεσο ή έμμεσο οικονομικό όφελος από την χρήση του έργου για το διανομέα του έργου και αδειοδόχο

bull που δεν περιλαμβάνει οικονομική συναλλαγή ως προϋπόθεση για τη χρήση ή πρόσβαση στο έργο

bull που δεν προσπορίζει στο διανομέα του έργου και αδειοδόχο έμμεσο οικονομικό όφελος (πχ διαφημίσεις) από την προβολή του έργου σε διαδικτυακό τόπο

[1] httpcreativecommonsorglicensesby-nc-sa40

Σημείωμα Αδειοδότησης

ΑΡΙΣΤΟΤΕΛΕΙΟ

ΠΑΝΕΠΙΣΤΗΜΙΟ

ΘΕΣΣΑΛΟΝΙΚΗΣ

ΑΝΟΙΚΤΑ

ΑΚΑΔΗΜΑΪΚΑ

ΜΑΘΗΜΑΤΑ

Τέλος ενότητας

Επεξεργασία Ανδρέας ΚοσματόπουλοςΘεσσαλονίκη Αύγουστος 2015

ΑΡΙΣΤΟΤΕΛΕΙΟ

ΠΑΝΕΠΙΣΤΗΜΙΟ

ΘΕΣΣΑΛΟΝΙΚΗΣ

Σημειώματα

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Σημείωμα Ιστορικού Εκδόσεων Έργου

Το παρόν έργο αποτελεί την έκδοση 100

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Διατήρηση Σημειωμάτων

Οποιαδήποτε αναπαραγωγή ή διασκευή του υλικού θα πρέπει να συμπεριλαμβάνει

το Σημείωμα Αναφοράς

το Σημείωμα Αδειοδότησης

τη δήλωση Διατήρησης Σημειωμάτων

το Σημείωμα Χρήσης Έργων Τρίτων (εφόσον υπάρχει)

μαζί με τους συνοδευόμενους υπερσυνδέσμους

Page 25: ΑΛΟΡΙΘΜΟΙ · 2015. 9. 9. · Αλγόριθμος QuickHull (2) •πολογισμός του κυρτού (επάνω)περιβλήματος για το S 1 –ρίσκουμε

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Το πρόβλημα του πλησιέστερου ζεύγους (2)

bull Γεωμετρική εξήγηση

bull Αναδρομή T(n) = 2T(n2) + M(n)

bull Αποδοτικότητα O(n logn)

bull Βελτιστότητα

25

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αλγόριθμος QuickHull

Υπολογίζει το Κυρτό Περίβλημα με έμπνευση από τη Γρήγορη Ταξινόμηση

bull Υποθέτουμε ότι τα σημεία είναι ταξινομημένα ως προς την συντεταγμένη x

bull Προσδιορίζουμε δύο ακραία σημαία P1 και P2 (μέρη του περιβλήματος)

bull Το σύνολο σημείων S διαιρείται σε δύο υποσύνολα S1 και S2

bull Υπολογίζουμε το κυρτό περίβλημα για το S1

bull Ομοίως υπολογίζουμε το κυρτό περίβλημα για το S1

26

P1

P2

Pmax

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αλγόριθμος QuickHull (2)

bull Υπολογισμός του κυρτού (επάνω) περιβλήματος για το S1

ndashΒρίσκουμε το πιο απομακρυσμένο σημείο Pmax από τη γραμμή P1P2

ndash Υπολογίζουμε το περίβλημα για τα σημεία αριστερά της γραμμής P1Pmax

ndash Υπολογίζουμε το περίβλημα για τα σημεία αριστερά της γραμμής PmaxP2

bull Εύρεση του σημείου Pmax

ndash Το Pmax μεγιστοποιεί την επιφάνεια του τριγώνου PmaxP1P2

ndash Σε περίπτωση ισοπαλίας επιλέγεται το Pmax που μεγιστοποιεί τη γωνία PmaxP1P2

bull Τα σημεία μέσα στο τρίγωνο PmaxP1P2 αγνοούνται εφεξής

bull Πως θα βρεθεί γεωμετρικά το σημείο Pmax και τα σημεία στα αριστερά της γραμμής P1Pmax

27

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αλγόριθμος QuickHull (3)

28

bull Πως θα βρεθεί γεωμετρικά το σημείο Pmax και τα σημεία στα αριστερά της γραμμής P1Pmax

ndash Δίνονται τα σημεία P1(x1y1) P2(x2y2) Pmax(xmaxymax)

ndash Το εμβαδόν του τριγώνου είναι μισό του μεγέθους της ορίζουσας

1199091 1199101 11199092 1199102 1119909119898119886119909 119910119898119886119909 1

= x1y2+xmaxy1+x2ymaxndashxmaxy2ndashx2y1-x1ymax

ndash Το πρόσημο της έκφρασης είναι θετικό αν και μόνο αν το σημείο Pmax

είναι στα αριστερά της γραμμής P1P2

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αποδοτικότητα Αλγορίθμου QuickHull (4)

bull Η εύρεση του πλέον απομακρυσμένου σημείου από την ευθεία P1P2 μπορεί να βρεθεί σε γραμμικό χρόνο

bull Έτσι προκύπτει η ίδια πολυπλοκότητα με τη γρήγορη ταξινόμησηndash Χειρότερη περίπτωση Θ(n2)

ndash Μέση περίπτωση Θ(n log n)

bull Αν τα σημεία δεν είναι αρχικά ταξινομημένα στον άξονα x αυτό επιτυγχάνεται με κόστος Θ(n log n)

bull Άλλοι αλγόριθμοι για το κυρτό περίβλημαndash Σάρωση του Graham DCHull

Επίσης σε Θ(n log n)

29

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Δυαδική Αναζήτηση

Πολύ αποδοτικός αλγόριθμος για αναζήτηση σε ταξινομημένο πίνακα

K

vs

A[0] A[m] A[n-1]

Αν K = A[m] σταμάτησε (επιτυχημένη αναζήτηση Διαφορετικά συνέχισε την αναζήτηση με όμοιο τρόπο στον πίνακα A[0m-1] αν K lt A[m] ή στον A[m+1n-1] αν K gt A[m]

l 0 r n-1

while l r do

m (l+r)2

if K = A[m] return m

else if K lt A[m] r m-1

else l m+1

return -1

30

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Ανάλυση Δυαδικής Αναζήτησης

bull Χρονική αποδοτικότηταndash Χειρότερη περίπτωση Cw (n) = 1 + Cw( n2 ) Cw (1) = 1

ndash Λύση Cw(n) = log2(n+1)

Αυτό είναι πολύ γρήγορο πχ Cw(106) = 20

bull Βέλτιστη μέθοδος για αναζήτηση σε ταξινομημένο πίνακα

bull Περιορισμοί η είσοδος πρέπει να είναι ταξινομημένη και στη μορφή πίνακα όχι πχ συνδεδεμένη λίστα

bull ΟΧΙ καλό παράδειγμα τεχνικής laquoδιαίρει και βασίλευεraquo

bull Υπάρχει ανάλογη τεχνική για τη συνεχή περίπτωση

31

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

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

Τα δυαδικά δένδρα έχουν έτοιμη τη δομή για αλγορίθμους διαίρει και βασίλευε

Πχ κλασικές διασχίσεις (προμεταενδο-διατεταγμένη)

Algorithm Inorder(T)

if T

Inorder(Tleft)

print(root of T)

Inorder(Tright)

ΑποδοτικότηταΘ(n)

32

a

b c

d e

a

b c

d e

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αλγόριθμοι Δυαδικών Δένδρων (2)

33

Άλλο παράδειγμα υπολογισμός ύψους

bull h(T) = maxh(TL) h(TR) + 1 if T and h() = -1

bull Αποδοτικότητα Θ(n)

TL TR

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Σημείωμα Αναφοράς

Copyright Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Ιωάννης Μανωλόπουλος Αναστάσιος Γούναρης laquoΑλγόριθμοι raquo Έκδοση 10 Θεσσαλονίκη 2015 Διαθέσιμο από τη δικτυακή διεύθυνσηhttpeclassauthgrcoursesOCRS417

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons Αναφορά -Μη Εμπορική Χρήση - Παρόμοια Διανομή 40 [1] ή μεταγενέστερη Διεθνής Έκδοση Εξαιρούνται τα αυτοτελή έργα τρίτων πχ φωτογραφίες διαγράμματα κλπ τα οποία εμπεριέχονται σε αυτό και τα οποία αναφέρονται μαζί με τους όρους χρήσης τους στο laquoΣημείωμα Χρήσης Έργων Τρίτωνraquo

Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο

για εμπορική χρήση εφόσον αυτό του ζητηθεί

Ως Μη Εμπορική ορίζεται η χρήση

bull που δεν περιλαμβάνει άμεσο ή έμμεσο οικονομικό όφελος από την χρήση του έργου για το διανομέα του έργου και αδειοδόχο

bull που δεν περιλαμβάνει οικονομική συναλλαγή ως προϋπόθεση για τη χρήση ή πρόσβαση στο έργο

bull που δεν προσπορίζει στο διανομέα του έργου και αδειοδόχο έμμεσο οικονομικό όφελος (πχ διαφημίσεις) από την προβολή του έργου σε διαδικτυακό τόπο

[1] httpcreativecommonsorglicensesby-nc-sa40

Σημείωμα Αδειοδότησης

ΑΡΙΣΤΟΤΕΛΕΙΟ

ΠΑΝΕΠΙΣΤΗΜΙΟ

ΘΕΣΣΑΛΟΝΙΚΗΣ

ΑΝΟΙΚΤΑ

ΑΚΑΔΗΜΑΪΚΑ

ΜΑΘΗΜΑΤΑ

Τέλος ενότητας

Επεξεργασία Ανδρέας ΚοσματόπουλοςΘεσσαλονίκη Αύγουστος 2015

ΑΡΙΣΤΟΤΕΛΕΙΟ

ΠΑΝΕΠΙΣΤΗΜΙΟ

ΘΕΣΣΑΛΟΝΙΚΗΣ

Σημειώματα

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Σημείωμα Ιστορικού Εκδόσεων Έργου

Το παρόν έργο αποτελεί την έκδοση 100

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Διατήρηση Σημειωμάτων

Οποιαδήποτε αναπαραγωγή ή διασκευή του υλικού θα πρέπει να συμπεριλαμβάνει

το Σημείωμα Αναφοράς

το Σημείωμα Αδειοδότησης

τη δήλωση Διατήρησης Σημειωμάτων

το Σημείωμα Χρήσης Έργων Τρίτων (εφόσον υπάρχει)

μαζί με τους συνοδευόμενους υπερσυνδέσμους

Page 26: ΑΛΟΡΙΘΜΟΙ · 2015. 9. 9. · Αλγόριθμος QuickHull (2) •πολογισμός του κυρτού (επάνω)περιβλήματος για το S 1 –ρίσκουμε

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αλγόριθμος QuickHull

Υπολογίζει το Κυρτό Περίβλημα με έμπνευση από τη Γρήγορη Ταξινόμηση

bull Υποθέτουμε ότι τα σημεία είναι ταξινομημένα ως προς την συντεταγμένη x

bull Προσδιορίζουμε δύο ακραία σημαία P1 και P2 (μέρη του περιβλήματος)

bull Το σύνολο σημείων S διαιρείται σε δύο υποσύνολα S1 και S2

bull Υπολογίζουμε το κυρτό περίβλημα για το S1

bull Ομοίως υπολογίζουμε το κυρτό περίβλημα για το S1

26

P1

P2

Pmax

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αλγόριθμος QuickHull (2)

bull Υπολογισμός του κυρτού (επάνω) περιβλήματος για το S1

ndashΒρίσκουμε το πιο απομακρυσμένο σημείο Pmax από τη γραμμή P1P2

ndash Υπολογίζουμε το περίβλημα για τα σημεία αριστερά της γραμμής P1Pmax

ndash Υπολογίζουμε το περίβλημα για τα σημεία αριστερά της γραμμής PmaxP2

bull Εύρεση του σημείου Pmax

ndash Το Pmax μεγιστοποιεί την επιφάνεια του τριγώνου PmaxP1P2

ndash Σε περίπτωση ισοπαλίας επιλέγεται το Pmax που μεγιστοποιεί τη γωνία PmaxP1P2

bull Τα σημεία μέσα στο τρίγωνο PmaxP1P2 αγνοούνται εφεξής

bull Πως θα βρεθεί γεωμετρικά το σημείο Pmax και τα σημεία στα αριστερά της γραμμής P1Pmax

27

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αλγόριθμος QuickHull (3)

28

bull Πως θα βρεθεί γεωμετρικά το σημείο Pmax και τα σημεία στα αριστερά της γραμμής P1Pmax

ndash Δίνονται τα σημεία P1(x1y1) P2(x2y2) Pmax(xmaxymax)

ndash Το εμβαδόν του τριγώνου είναι μισό του μεγέθους της ορίζουσας

1199091 1199101 11199092 1199102 1119909119898119886119909 119910119898119886119909 1

= x1y2+xmaxy1+x2ymaxndashxmaxy2ndashx2y1-x1ymax

ndash Το πρόσημο της έκφρασης είναι θετικό αν και μόνο αν το σημείο Pmax

είναι στα αριστερά της γραμμής P1P2

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αποδοτικότητα Αλγορίθμου QuickHull (4)

bull Η εύρεση του πλέον απομακρυσμένου σημείου από την ευθεία P1P2 μπορεί να βρεθεί σε γραμμικό χρόνο

bull Έτσι προκύπτει η ίδια πολυπλοκότητα με τη γρήγορη ταξινόμησηndash Χειρότερη περίπτωση Θ(n2)

ndash Μέση περίπτωση Θ(n log n)

bull Αν τα σημεία δεν είναι αρχικά ταξινομημένα στον άξονα x αυτό επιτυγχάνεται με κόστος Θ(n log n)

bull Άλλοι αλγόριθμοι για το κυρτό περίβλημαndash Σάρωση του Graham DCHull

Επίσης σε Θ(n log n)

29

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Δυαδική Αναζήτηση

Πολύ αποδοτικός αλγόριθμος για αναζήτηση σε ταξινομημένο πίνακα

K

vs

A[0] A[m] A[n-1]

Αν K = A[m] σταμάτησε (επιτυχημένη αναζήτηση Διαφορετικά συνέχισε την αναζήτηση με όμοιο τρόπο στον πίνακα A[0m-1] αν K lt A[m] ή στον A[m+1n-1] αν K gt A[m]

l 0 r n-1

while l r do

m (l+r)2

if K = A[m] return m

else if K lt A[m] r m-1

else l m+1

return -1

30

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Ανάλυση Δυαδικής Αναζήτησης

bull Χρονική αποδοτικότηταndash Χειρότερη περίπτωση Cw (n) = 1 + Cw( n2 ) Cw (1) = 1

ndash Λύση Cw(n) = log2(n+1)

Αυτό είναι πολύ γρήγορο πχ Cw(106) = 20

bull Βέλτιστη μέθοδος για αναζήτηση σε ταξινομημένο πίνακα

bull Περιορισμοί η είσοδος πρέπει να είναι ταξινομημένη και στη μορφή πίνακα όχι πχ συνδεδεμένη λίστα

bull ΟΧΙ καλό παράδειγμα τεχνικής laquoδιαίρει και βασίλευεraquo

bull Υπάρχει ανάλογη τεχνική για τη συνεχή περίπτωση

31

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

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

Τα δυαδικά δένδρα έχουν έτοιμη τη δομή για αλγορίθμους διαίρει και βασίλευε

Πχ κλασικές διασχίσεις (προμεταενδο-διατεταγμένη)

Algorithm Inorder(T)

if T

Inorder(Tleft)

print(root of T)

Inorder(Tright)

ΑποδοτικότηταΘ(n)

32

a

b c

d e

a

b c

d e

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αλγόριθμοι Δυαδικών Δένδρων (2)

33

Άλλο παράδειγμα υπολογισμός ύψους

bull h(T) = maxh(TL) h(TR) + 1 if T and h() = -1

bull Αποδοτικότητα Θ(n)

TL TR

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Σημείωμα Αναφοράς

Copyright Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Ιωάννης Μανωλόπουλος Αναστάσιος Γούναρης laquoΑλγόριθμοι raquo Έκδοση 10 Θεσσαλονίκη 2015 Διαθέσιμο από τη δικτυακή διεύθυνσηhttpeclassauthgrcoursesOCRS417

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons Αναφορά -Μη Εμπορική Χρήση - Παρόμοια Διανομή 40 [1] ή μεταγενέστερη Διεθνής Έκδοση Εξαιρούνται τα αυτοτελή έργα τρίτων πχ φωτογραφίες διαγράμματα κλπ τα οποία εμπεριέχονται σε αυτό και τα οποία αναφέρονται μαζί με τους όρους χρήσης τους στο laquoΣημείωμα Χρήσης Έργων Τρίτωνraquo

Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο

για εμπορική χρήση εφόσον αυτό του ζητηθεί

Ως Μη Εμπορική ορίζεται η χρήση

bull που δεν περιλαμβάνει άμεσο ή έμμεσο οικονομικό όφελος από την χρήση του έργου για το διανομέα του έργου και αδειοδόχο

bull που δεν περιλαμβάνει οικονομική συναλλαγή ως προϋπόθεση για τη χρήση ή πρόσβαση στο έργο

bull που δεν προσπορίζει στο διανομέα του έργου και αδειοδόχο έμμεσο οικονομικό όφελος (πχ διαφημίσεις) από την προβολή του έργου σε διαδικτυακό τόπο

[1] httpcreativecommonsorglicensesby-nc-sa40

Σημείωμα Αδειοδότησης

ΑΡΙΣΤΟΤΕΛΕΙΟ

ΠΑΝΕΠΙΣΤΗΜΙΟ

ΘΕΣΣΑΛΟΝΙΚΗΣ

ΑΝΟΙΚΤΑ

ΑΚΑΔΗΜΑΪΚΑ

ΜΑΘΗΜΑΤΑ

Τέλος ενότητας

Επεξεργασία Ανδρέας ΚοσματόπουλοςΘεσσαλονίκη Αύγουστος 2015

ΑΡΙΣΤΟΤΕΛΕΙΟ

ΠΑΝΕΠΙΣΤΗΜΙΟ

ΘΕΣΣΑΛΟΝΙΚΗΣ

Σημειώματα

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Σημείωμα Ιστορικού Εκδόσεων Έργου

Το παρόν έργο αποτελεί την έκδοση 100

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Διατήρηση Σημειωμάτων

Οποιαδήποτε αναπαραγωγή ή διασκευή του υλικού θα πρέπει να συμπεριλαμβάνει

το Σημείωμα Αναφοράς

το Σημείωμα Αδειοδότησης

τη δήλωση Διατήρησης Σημειωμάτων

το Σημείωμα Χρήσης Έργων Τρίτων (εφόσον υπάρχει)

μαζί με τους συνοδευόμενους υπερσυνδέσμους

Page 27: ΑΛΟΡΙΘΜΟΙ · 2015. 9. 9. · Αλγόριθμος QuickHull (2) •πολογισμός του κυρτού (επάνω)περιβλήματος για το S 1 –ρίσκουμε

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αλγόριθμος QuickHull (2)

bull Υπολογισμός του κυρτού (επάνω) περιβλήματος για το S1

ndashΒρίσκουμε το πιο απομακρυσμένο σημείο Pmax από τη γραμμή P1P2

ndash Υπολογίζουμε το περίβλημα για τα σημεία αριστερά της γραμμής P1Pmax

ndash Υπολογίζουμε το περίβλημα για τα σημεία αριστερά της γραμμής PmaxP2

bull Εύρεση του σημείου Pmax

ndash Το Pmax μεγιστοποιεί την επιφάνεια του τριγώνου PmaxP1P2

ndash Σε περίπτωση ισοπαλίας επιλέγεται το Pmax που μεγιστοποιεί τη γωνία PmaxP1P2

bull Τα σημεία μέσα στο τρίγωνο PmaxP1P2 αγνοούνται εφεξής

bull Πως θα βρεθεί γεωμετρικά το σημείο Pmax και τα σημεία στα αριστερά της γραμμής P1Pmax

27

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αλγόριθμος QuickHull (3)

28

bull Πως θα βρεθεί γεωμετρικά το σημείο Pmax και τα σημεία στα αριστερά της γραμμής P1Pmax

ndash Δίνονται τα σημεία P1(x1y1) P2(x2y2) Pmax(xmaxymax)

ndash Το εμβαδόν του τριγώνου είναι μισό του μεγέθους της ορίζουσας

1199091 1199101 11199092 1199102 1119909119898119886119909 119910119898119886119909 1

= x1y2+xmaxy1+x2ymaxndashxmaxy2ndashx2y1-x1ymax

ndash Το πρόσημο της έκφρασης είναι θετικό αν και μόνο αν το σημείο Pmax

είναι στα αριστερά της γραμμής P1P2

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αποδοτικότητα Αλγορίθμου QuickHull (4)

bull Η εύρεση του πλέον απομακρυσμένου σημείου από την ευθεία P1P2 μπορεί να βρεθεί σε γραμμικό χρόνο

bull Έτσι προκύπτει η ίδια πολυπλοκότητα με τη γρήγορη ταξινόμησηndash Χειρότερη περίπτωση Θ(n2)

ndash Μέση περίπτωση Θ(n log n)

bull Αν τα σημεία δεν είναι αρχικά ταξινομημένα στον άξονα x αυτό επιτυγχάνεται με κόστος Θ(n log n)

bull Άλλοι αλγόριθμοι για το κυρτό περίβλημαndash Σάρωση του Graham DCHull

Επίσης σε Θ(n log n)

29

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Δυαδική Αναζήτηση

Πολύ αποδοτικός αλγόριθμος για αναζήτηση σε ταξινομημένο πίνακα

K

vs

A[0] A[m] A[n-1]

Αν K = A[m] σταμάτησε (επιτυχημένη αναζήτηση Διαφορετικά συνέχισε την αναζήτηση με όμοιο τρόπο στον πίνακα A[0m-1] αν K lt A[m] ή στον A[m+1n-1] αν K gt A[m]

l 0 r n-1

while l r do

m (l+r)2

if K = A[m] return m

else if K lt A[m] r m-1

else l m+1

return -1

30

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Ανάλυση Δυαδικής Αναζήτησης

bull Χρονική αποδοτικότηταndash Χειρότερη περίπτωση Cw (n) = 1 + Cw( n2 ) Cw (1) = 1

ndash Λύση Cw(n) = log2(n+1)

Αυτό είναι πολύ γρήγορο πχ Cw(106) = 20

bull Βέλτιστη μέθοδος για αναζήτηση σε ταξινομημένο πίνακα

bull Περιορισμοί η είσοδος πρέπει να είναι ταξινομημένη και στη μορφή πίνακα όχι πχ συνδεδεμένη λίστα

bull ΟΧΙ καλό παράδειγμα τεχνικής laquoδιαίρει και βασίλευεraquo

bull Υπάρχει ανάλογη τεχνική για τη συνεχή περίπτωση

31

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

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

Τα δυαδικά δένδρα έχουν έτοιμη τη δομή για αλγορίθμους διαίρει και βασίλευε

Πχ κλασικές διασχίσεις (προμεταενδο-διατεταγμένη)

Algorithm Inorder(T)

if T

Inorder(Tleft)

print(root of T)

Inorder(Tright)

ΑποδοτικότηταΘ(n)

32

a

b c

d e

a

b c

d e

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αλγόριθμοι Δυαδικών Δένδρων (2)

33

Άλλο παράδειγμα υπολογισμός ύψους

bull h(T) = maxh(TL) h(TR) + 1 if T and h() = -1

bull Αποδοτικότητα Θ(n)

TL TR

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Σημείωμα Αναφοράς

Copyright Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Ιωάννης Μανωλόπουλος Αναστάσιος Γούναρης laquoΑλγόριθμοι raquo Έκδοση 10 Θεσσαλονίκη 2015 Διαθέσιμο από τη δικτυακή διεύθυνσηhttpeclassauthgrcoursesOCRS417

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons Αναφορά -Μη Εμπορική Χρήση - Παρόμοια Διανομή 40 [1] ή μεταγενέστερη Διεθνής Έκδοση Εξαιρούνται τα αυτοτελή έργα τρίτων πχ φωτογραφίες διαγράμματα κλπ τα οποία εμπεριέχονται σε αυτό και τα οποία αναφέρονται μαζί με τους όρους χρήσης τους στο laquoΣημείωμα Χρήσης Έργων Τρίτωνraquo

Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο

για εμπορική χρήση εφόσον αυτό του ζητηθεί

Ως Μη Εμπορική ορίζεται η χρήση

bull που δεν περιλαμβάνει άμεσο ή έμμεσο οικονομικό όφελος από την χρήση του έργου για το διανομέα του έργου και αδειοδόχο

bull που δεν περιλαμβάνει οικονομική συναλλαγή ως προϋπόθεση για τη χρήση ή πρόσβαση στο έργο

bull που δεν προσπορίζει στο διανομέα του έργου και αδειοδόχο έμμεσο οικονομικό όφελος (πχ διαφημίσεις) από την προβολή του έργου σε διαδικτυακό τόπο

[1] httpcreativecommonsorglicensesby-nc-sa40

Σημείωμα Αδειοδότησης

ΑΡΙΣΤΟΤΕΛΕΙΟ

ΠΑΝΕΠΙΣΤΗΜΙΟ

ΘΕΣΣΑΛΟΝΙΚΗΣ

ΑΝΟΙΚΤΑ

ΑΚΑΔΗΜΑΪΚΑ

ΜΑΘΗΜΑΤΑ

Τέλος ενότητας

Επεξεργασία Ανδρέας ΚοσματόπουλοςΘεσσαλονίκη Αύγουστος 2015

ΑΡΙΣΤΟΤΕΛΕΙΟ

ΠΑΝΕΠΙΣΤΗΜΙΟ

ΘΕΣΣΑΛΟΝΙΚΗΣ

Σημειώματα

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Σημείωμα Ιστορικού Εκδόσεων Έργου

Το παρόν έργο αποτελεί την έκδοση 100

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Διατήρηση Σημειωμάτων

Οποιαδήποτε αναπαραγωγή ή διασκευή του υλικού θα πρέπει να συμπεριλαμβάνει

το Σημείωμα Αναφοράς

το Σημείωμα Αδειοδότησης

τη δήλωση Διατήρησης Σημειωμάτων

το Σημείωμα Χρήσης Έργων Τρίτων (εφόσον υπάρχει)

μαζί με τους συνοδευόμενους υπερσυνδέσμους

Page 28: ΑΛΟΡΙΘΜΟΙ · 2015. 9. 9. · Αλγόριθμος QuickHull (2) •πολογισμός του κυρτού (επάνω)περιβλήματος για το S 1 –ρίσκουμε

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αλγόριθμος QuickHull (3)

28

bull Πως θα βρεθεί γεωμετρικά το σημείο Pmax και τα σημεία στα αριστερά της γραμμής P1Pmax

ndash Δίνονται τα σημεία P1(x1y1) P2(x2y2) Pmax(xmaxymax)

ndash Το εμβαδόν του τριγώνου είναι μισό του μεγέθους της ορίζουσας

1199091 1199101 11199092 1199102 1119909119898119886119909 119910119898119886119909 1

= x1y2+xmaxy1+x2ymaxndashxmaxy2ndashx2y1-x1ymax

ndash Το πρόσημο της έκφρασης είναι θετικό αν και μόνο αν το σημείο Pmax

είναι στα αριστερά της γραμμής P1P2

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αποδοτικότητα Αλγορίθμου QuickHull (4)

bull Η εύρεση του πλέον απομακρυσμένου σημείου από την ευθεία P1P2 μπορεί να βρεθεί σε γραμμικό χρόνο

bull Έτσι προκύπτει η ίδια πολυπλοκότητα με τη γρήγορη ταξινόμησηndash Χειρότερη περίπτωση Θ(n2)

ndash Μέση περίπτωση Θ(n log n)

bull Αν τα σημεία δεν είναι αρχικά ταξινομημένα στον άξονα x αυτό επιτυγχάνεται με κόστος Θ(n log n)

bull Άλλοι αλγόριθμοι για το κυρτό περίβλημαndash Σάρωση του Graham DCHull

Επίσης σε Θ(n log n)

29

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Δυαδική Αναζήτηση

Πολύ αποδοτικός αλγόριθμος για αναζήτηση σε ταξινομημένο πίνακα

K

vs

A[0] A[m] A[n-1]

Αν K = A[m] σταμάτησε (επιτυχημένη αναζήτηση Διαφορετικά συνέχισε την αναζήτηση με όμοιο τρόπο στον πίνακα A[0m-1] αν K lt A[m] ή στον A[m+1n-1] αν K gt A[m]

l 0 r n-1

while l r do

m (l+r)2

if K = A[m] return m

else if K lt A[m] r m-1

else l m+1

return -1

30

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Ανάλυση Δυαδικής Αναζήτησης

bull Χρονική αποδοτικότηταndash Χειρότερη περίπτωση Cw (n) = 1 + Cw( n2 ) Cw (1) = 1

ndash Λύση Cw(n) = log2(n+1)

Αυτό είναι πολύ γρήγορο πχ Cw(106) = 20

bull Βέλτιστη μέθοδος για αναζήτηση σε ταξινομημένο πίνακα

bull Περιορισμοί η είσοδος πρέπει να είναι ταξινομημένη και στη μορφή πίνακα όχι πχ συνδεδεμένη λίστα

bull ΟΧΙ καλό παράδειγμα τεχνικής laquoδιαίρει και βασίλευεraquo

bull Υπάρχει ανάλογη τεχνική για τη συνεχή περίπτωση

31

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

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

Τα δυαδικά δένδρα έχουν έτοιμη τη δομή για αλγορίθμους διαίρει και βασίλευε

Πχ κλασικές διασχίσεις (προμεταενδο-διατεταγμένη)

Algorithm Inorder(T)

if T

Inorder(Tleft)

print(root of T)

Inorder(Tright)

ΑποδοτικότηταΘ(n)

32

a

b c

d e

a

b c

d e

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αλγόριθμοι Δυαδικών Δένδρων (2)

33

Άλλο παράδειγμα υπολογισμός ύψους

bull h(T) = maxh(TL) h(TR) + 1 if T and h() = -1

bull Αποδοτικότητα Θ(n)

TL TR

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Σημείωμα Αναφοράς

Copyright Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Ιωάννης Μανωλόπουλος Αναστάσιος Γούναρης laquoΑλγόριθμοι raquo Έκδοση 10 Θεσσαλονίκη 2015 Διαθέσιμο από τη δικτυακή διεύθυνσηhttpeclassauthgrcoursesOCRS417

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons Αναφορά -Μη Εμπορική Χρήση - Παρόμοια Διανομή 40 [1] ή μεταγενέστερη Διεθνής Έκδοση Εξαιρούνται τα αυτοτελή έργα τρίτων πχ φωτογραφίες διαγράμματα κλπ τα οποία εμπεριέχονται σε αυτό και τα οποία αναφέρονται μαζί με τους όρους χρήσης τους στο laquoΣημείωμα Χρήσης Έργων Τρίτωνraquo

Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο

για εμπορική χρήση εφόσον αυτό του ζητηθεί

Ως Μη Εμπορική ορίζεται η χρήση

bull που δεν περιλαμβάνει άμεσο ή έμμεσο οικονομικό όφελος από την χρήση του έργου για το διανομέα του έργου και αδειοδόχο

bull που δεν περιλαμβάνει οικονομική συναλλαγή ως προϋπόθεση για τη χρήση ή πρόσβαση στο έργο

bull που δεν προσπορίζει στο διανομέα του έργου και αδειοδόχο έμμεσο οικονομικό όφελος (πχ διαφημίσεις) από την προβολή του έργου σε διαδικτυακό τόπο

[1] httpcreativecommonsorglicensesby-nc-sa40

Σημείωμα Αδειοδότησης

ΑΡΙΣΤΟΤΕΛΕΙΟ

ΠΑΝΕΠΙΣΤΗΜΙΟ

ΘΕΣΣΑΛΟΝΙΚΗΣ

ΑΝΟΙΚΤΑ

ΑΚΑΔΗΜΑΪΚΑ

ΜΑΘΗΜΑΤΑ

Τέλος ενότητας

Επεξεργασία Ανδρέας ΚοσματόπουλοςΘεσσαλονίκη Αύγουστος 2015

ΑΡΙΣΤΟΤΕΛΕΙΟ

ΠΑΝΕΠΙΣΤΗΜΙΟ

ΘΕΣΣΑΛΟΝΙΚΗΣ

Σημειώματα

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Σημείωμα Ιστορικού Εκδόσεων Έργου

Το παρόν έργο αποτελεί την έκδοση 100

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Διατήρηση Σημειωμάτων

Οποιαδήποτε αναπαραγωγή ή διασκευή του υλικού θα πρέπει να συμπεριλαμβάνει

το Σημείωμα Αναφοράς

το Σημείωμα Αδειοδότησης

τη δήλωση Διατήρησης Σημειωμάτων

το Σημείωμα Χρήσης Έργων Τρίτων (εφόσον υπάρχει)

μαζί με τους συνοδευόμενους υπερσυνδέσμους

Page 29: ΑΛΟΡΙΘΜΟΙ · 2015. 9. 9. · Αλγόριθμος QuickHull (2) •πολογισμός του κυρτού (επάνω)περιβλήματος για το S 1 –ρίσκουμε

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αποδοτικότητα Αλγορίθμου QuickHull (4)

bull Η εύρεση του πλέον απομακρυσμένου σημείου από την ευθεία P1P2 μπορεί να βρεθεί σε γραμμικό χρόνο

bull Έτσι προκύπτει η ίδια πολυπλοκότητα με τη γρήγορη ταξινόμησηndash Χειρότερη περίπτωση Θ(n2)

ndash Μέση περίπτωση Θ(n log n)

bull Αν τα σημεία δεν είναι αρχικά ταξινομημένα στον άξονα x αυτό επιτυγχάνεται με κόστος Θ(n log n)

bull Άλλοι αλγόριθμοι για το κυρτό περίβλημαndash Σάρωση του Graham DCHull

Επίσης σε Θ(n log n)

29

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Δυαδική Αναζήτηση

Πολύ αποδοτικός αλγόριθμος για αναζήτηση σε ταξινομημένο πίνακα

K

vs

A[0] A[m] A[n-1]

Αν K = A[m] σταμάτησε (επιτυχημένη αναζήτηση Διαφορετικά συνέχισε την αναζήτηση με όμοιο τρόπο στον πίνακα A[0m-1] αν K lt A[m] ή στον A[m+1n-1] αν K gt A[m]

l 0 r n-1

while l r do

m (l+r)2

if K = A[m] return m

else if K lt A[m] r m-1

else l m+1

return -1

30

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Ανάλυση Δυαδικής Αναζήτησης

bull Χρονική αποδοτικότηταndash Χειρότερη περίπτωση Cw (n) = 1 + Cw( n2 ) Cw (1) = 1

ndash Λύση Cw(n) = log2(n+1)

Αυτό είναι πολύ γρήγορο πχ Cw(106) = 20

bull Βέλτιστη μέθοδος για αναζήτηση σε ταξινομημένο πίνακα

bull Περιορισμοί η είσοδος πρέπει να είναι ταξινομημένη και στη μορφή πίνακα όχι πχ συνδεδεμένη λίστα

bull ΟΧΙ καλό παράδειγμα τεχνικής laquoδιαίρει και βασίλευεraquo

bull Υπάρχει ανάλογη τεχνική για τη συνεχή περίπτωση

31

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

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

Τα δυαδικά δένδρα έχουν έτοιμη τη δομή για αλγορίθμους διαίρει και βασίλευε

Πχ κλασικές διασχίσεις (προμεταενδο-διατεταγμένη)

Algorithm Inorder(T)

if T

Inorder(Tleft)

print(root of T)

Inorder(Tright)

ΑποδοτικότηταΘ(n)

32

a

b c

d e

a

b c

d e

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αλγόριθμοι Δυαδικών Δένδρων (2)

33

Άλλο παράδειγμα υπολογισμός ύψους

bull h(T) = maxh(TL) h(TR) + 1 if T and h() = -1

bull Αποδοτικότητα Θ(n)

TL TR

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Σημείωμα Αναφοράς

Copyright Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Ιωάννης Μανωλόπουλος Αναστάσιος Γούναρης laquoΑλγόριθμοι raquo Έκδοση 10 Θεσσαλονίκη 2015 Διαθέσιμο από τη δικτυακή διεύθυνσηhttpeclassauthgrcoursesOCRS417

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons Αναφορά -Μη Εμπορική Χρήση - Παρόμοια Διανομή 40 [1] ή μεταγενέστερη Διεθνής Έκδοση Εξαιρούνται τα αυτοτελή έργα τρίτων πχ φωτογραφίες διαγράμματα κλπ τα οποία εμπεριέχονται σε αυτό και τα οποία αναφέρονται μαζί με τους όρους χρήσης τους στο laquoΣημείωμα Χρήσης Έργων Τρίτωνraquo

Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο

για εμπορική χρήση εφόσον αυτό του ζητηθεί

Ως Μη Εμπορική ορίζεται η χρήση

bull που δεν περιλαμβάνει άμεσο ή έμμεσο οικονομικό όφελος από την χρήση του έργου για το διανομέα του έργου και αδειοδόχο

bull που δεν περιλαμβάνει οικονομική συναλλαγή ως προϋπόθεση για τη χρήση ή πρόσβαση στο έργο

bull που δεν προσπορίζει στο διανομέα του έργου και αδειοδόχο έμμεσο οικονομικό όφελος (πχ διαφημίσεις) από την προβολή του έργου σε διαδικτυακό τόπο

[1] httpcreativecommonsorglicensesby-nc-sa40

Σημείωμα Αδειοδότησης

ΑΡΙΣΤΟΤΕΛΕΙΟ

ΠΑΝΕΠΙΣΤΗΜΙΟ

ΘΕΣΣΑΛΟΝΙΚΗΣ

ΑΝΟΙΚΤΑ

ΑΚΑΔΗΜΑΪΚΑ

ΜΑΘΗΜΑΤΑ

Τέλος ενότητας

Επεξεργασία Ανδρέας ΚοσματόπουλοςΘεσσαλονίκη Αύγουστος 2015

ΑΡΙΣΤΟΤΕΛΕΙΟ

ΠΑΝΕΠΙΣΤΗΜΙΟ

ΘΕΣΣΑΛΟΝΙΚΗΣ

Σημειώματα

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Σημείωμα Ιστορικού Εκδόσεων Έργου

Το παρόν έργο αποτελεί την έκδοση 100

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Διατήρηση Σημειωμάτων

Οποιαδήποτε αναπαραγωγή ή διασκευή του υλικού θα πρέπει να συμπεριλαμβάνει

το Σημείωμα Αναφοράς

το Σημείωμα Αδειοδότησης

τη δήλωση Διατήρησης Σημειωμάτων

το Σημείωμα Χρήσης Έργων Τρίτων (εφόσον υπάρχει)

μαζί με τους συνοδευόμενους υπερσυνδέσμους

Page 30: ΑΛΟΡΙΘΜΟΙ · 2015. 9. 9. · Αλγόριθμος QuickHull (2) •πολογισμός του κυρτού (επάνω)περιβλήματος για το S 1 –ρίσκουμε

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Δυαδική Αναζήτηση

Πολύ αποδοτικός αλγόριθμος για αναζήτηση σε ταξινομημένο πίνακα

K

vs

A[0] A[m] A[n-1]

Αν K = A[m] σταμάτησε (επιτυχημένη αναζήτηση Διαφορετικά συνέχισε την αναζήτηση με όμοιο τρόπο στον πίνακα A[0m-1] αν K lt A[m] ή στον A[m+1n-1] αν K gt A[m]

l 0 r n-1

while l r do

m (l+r)2

if K = A[m] return m

else if K lt A[m] r m-1

else l m+1

return -1

30

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Ανάλυση Δυαδικής Αναζήτησης

bull Χρονική αποδοτικότηταndash Χειρότερη περίπτωση Cw (n) = 1 + Cw( n2 ) Cw (1) = 1

ndash Λύση Cw(n) = log2(n+1)

Αυτό είναι πολύ γρήγορο πχ Cw(106) = 20

bull Βέλτιστη μέθοδος για αναζήτηση σε ταξινομημένο πίνακα

bull Περιορισμοί η είσοδος πρέπει να είναι ταξινομημένη και στη μορφή πίνακα όχι πχ συνδεδεμένη λίστα

bull ΟΧΙ καλό παράδειγμα τεχνικής laquoδιαίρει και βασίλευεraquo

bull Υπάρχει ανάλογη τεχνική για τη συνεχή περίπτωση

31

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

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

Τα δυαδικά δένδρα έχουν έτοιμη τη δομή για αλγορίθμους διαίρει και βασίλευε

Πχ κλασικές διασχίσεις (προμεταενδο-διατεταγμένη)

Algorithm Inorder(T)

if T

Inorder(Tleft)

print(root of T)

Inorder(Tright)

ΑποδοτικότηταΘ(n)

32

a

b c

d e

a

b c

d e

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αλγόριθμοι Δυαδικών Δένδρων (2)

33

Άλλο παράδειγμα υπολογισμός ύψους

bull h(T) = maxh(TL) h(TR) + 1 if T and h() = -1

bull Αποδοτικότητα Θ(n)

TL TR

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Σημείωμα Αναφοράς

Copyright Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Ιωάννης Μανωλόπουλος Αναστάσιος Γούναρης laquoΑλγόριθμοι raquo Έκδοση 10 Θεσσαλονίκη 2015 Διαθέσιμο από τη δικτυακή διεύθυνσηhttpeclassauthgrcoursesOCRS417

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons Αναφορά -Μη Εμπορική Χρήση - Παρόμοια Διανομή 40 [1] ή μεταγενέστερη Διεθνής Έκδοση Εξαιρούνται τα αυτοτελή έργα τρίτων πχ φωτογραφίες διαγράμματα κλπ τα οποία εμπεριέχονται σε αυτό και τα οποία αναφέρονται μαζί με τους όρους χρήσης τους στο laquoΣημείωμα Χρήσης Έργων Τρίτωνraquo

Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο

για εμπορική χρήση εφόσον αυτό του ζητηθεί

Ως Μη Εμπορική ορίζεται η χρήση

bull που δεν περιλαμβάνει άμεσο ή έμμεσο οικονομικό όφελος από την χρήση του έργου για το διανομέα του έργου και αδειοδόχο

bull που δεν περιλαμβάνει οικονομική συναλλαγή ως προϋπόθεση για τη χρήση ή πρόσβαση στο έργο

bull που δεν προσπορίζει στο διανομέα του έργου και αδειοδόχο έμμεσο οικονομικό όφελος (πχ διαφημίσεις) από την προβολή του έργου σε διαδικτυακό τόπο

[1] httpcreativecommonsorglicensesby-nc-sa40

Σημείωμα Αδειοδότησης

ΑΡΙΣΤΟΤΕΛΕΙΟ

ΠΑΝΕΠΙΣΤΗΜΙΟ

ΘΕΣΣΑΛΟΝΙΚΗΣ

ΑΝΟΙΚΤΑ

ΑΚΑΔΗΜΑΪΚΑ

ΜΑΘΗΜΑΤΑ

Τέλος ενότητας

Επεξεργασία Ανδρέας ΚοσματόπουλοςΘεσσαλονίκη Αύγουστος 2015

ΑΡΙΣΤΟΤΕΛΕΙΟ

ΠΑΝΕΠΙΣΤΗΜΙΟ

ΘΕΣΣΑΛΟΝΙΚΗΣ

Σημειώματα

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Σημείωμα Ιστορικού Εκδόσεων Έργου

Το παρόν έργο αποτελεί την έκδοση 100

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Διατήρηση Σημειωμάτων

Οποιαδήποτε αναπαραγωγή ή διασκευή του υλικού θα πρέπει να συμπεριλαμβάνει

το Σημείωμα Αναφοράς

το Σημείωμα Αδειοδότησης

τη δήλωση Διατήρησης Σημειωμάτων

το Σημείωμα Χρήσης Έργων Τρίτων (εφόσον υπάρχει)

μαζί με τους συνοδευόμενους υπερσυνδέσμους

Page 31: ΑΛΟΡΙΘΜΟΙ · 2015. 9. 9. · Αλγόριθμος QuickHull (2) •πολογισμός του κυρτού (επάνω)περιβλήματος για το S 1 –ρίσκουμε

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Ανάλυση Δυαδικής Αναζήτησης

bull Χρονική αποδοτικότηταndash Χειρότερη περίπτωση Cw (n) = 1 + Cw( n2 ) Cw (1) = 1

ndash Λύση Cw(n) = log2(n+1)

Αυτό είναι πολύ γρήγορο πχ Cw(106) = 20

bull Βέλτιστη μέθοδος για αναζήτηση σε ταξινομημένο πίνακα

bull Περιορισμοί η είσοδος πρέπει να είναι ταξινομημένη και στη μορφή πίνακα όχι πχ συνδεδεμένη λίστα

bull ΟΧΙ καλό παράδειγμα τεχνικής laquoδιαίρει και βασίλευεraquo

bull Υπάρχει ανάλογη τεχνική για τη συνεχή περίπτωση

31

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

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

Τα δυαδικά δένδρα έχουν έτοιμη τη δομή για αλγορίθμους διαίρει και βασίλευε

Πχ κλασικές διασχίσεις (προμεταενδο-διατεταγμένη)

Algorithm Inorder(T)

if T

Inorder(Tleft)

print(root of T)

Inorder(Tright)

ΑποδοτικότηταΘ(n)

32

a

b c

d e

a

b c

d e

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αλγόριθμοι Δυαδικών Δένδρων (2)

33

Άλλο παράδειγμα υπολογισμός ύψους

bull h(T) = maxh(TL) h(TR) + 1 if T and h() = -1

bull Αποδοτικότητα Θ(n)

TL TR

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Σημείωμα Αναφοράς

Copyright Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Ιωάννης Μανωλόπουλος Αναστάσιος Γούναρης laquoΑλγόριθμοι raquo Έκδοση 10 Θεσσαλονίκη 2015 Διαθέσιμο από τη δικτυακή διεύθυνσηhttpeclassauthgrcoursesOCRS417

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons Αναφορά -Μη Εμπορική Χρήση - Παρόμοια Διανομή 40 [1] ή μεταγενέστερη Διεθνής Έκδοση Εξαιρούνται τα αυτοτελή έργα τρίτων πχ φωτογραφίες διαγράμματα κλπ τα οποία εμπεριέχονται σε αυτό και τα οποία αναφέρονται μαζί με τους όρους χρήσης τους στο laquoΣημείωμα Χρήσης Έργων Τρίτωνraquo

Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο

για εμπορική χρήση εφόσον αυτό του ζητηθεί

Ως Μη Εμπορική ορίζεται η χρήση

bull που δεν περιλαμβάνει άμεσο ή έμμεσο οικονομικό όφελος από την χρήση του έργου για το διανομέα του έργου και αδειοδόχο

bull που δεν περιλαμβάνει οικονομική συναλλαγή ως προϋπόθεση για τη χρήση ή πρόσβαση στο έργο

bull που δεν προσπορίζει στο διανομέα του έργου και αδειοδόχο έμμεσο οικονομικό όφελος (πχ διαφημίσεις) από την προβολή του έργου σε διαδικτυακό τόπο

[1] httpcreativecommonsorglicensesby-nc-sa40

Σημείωμα Αδειοδότησης

ΑΡΙΣΤΟΤΕΛΕΙΟ

ΠΑΝΕΠΙΣΤΗΜΙΟ

ΘΕΣΣΑΛΟΝΙΚΗΣ

ΑΝΟΙΚΤΑ

ΑΚΑΔΗΜΑΪΚΑ

ΜΑΘΗΜΑΤΑ

Τέλος ενότητας

Επεξεργασία Ανδρέας ΚοσματόπουλοςΘεσσαλονίκη Αύγουστος 2015

ΑΡΙΣΤΟΤΕΛΕΙΟ

ΠΑΝΕΠΙΣΤΗΜΙΟ

ΘΕΣΣΑΛΟΝΙΚΗΣ

Σημειώματα

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Σημείωμα Ιστορικού Εκδόσεων Έργου

Το παρόν έργο αποτελεί την έκδοση 100

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Διατήρηση Σημειωμάτων

Οποιαδήποτε αναπαραγωγή ή διασκευή του υλικού θα πρέπει να συμπεριλαμβάνει

το Σημείωμα Αναφοράς

το Σημείωμα Αδειοδότησης

τη δήλωση Διατήρησης Σημειωμάτων

το Σημείωμα Χρήσης Έργων Τρίτων (εφόσον υπάρχει)

μαζί με τους συνοδευόμενους υπερσυνδέσμους

Page 32: ΑΛΟΡΙΘΜΟΙ · 2015. 9. 9. · Αλγόριθμος QuickHull (2) •πολογισμός του κυρτού (επάνω)περιβλήματος για το S 1 –ρίσκουμε

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

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

Τα δυαδικά δένδρα έχουν έτοιμη τη δομή για αλγορίθμους διαίρει και βασίλευε

Πχ κλασικές διασχίσεις (προμεταενδο-διατεταγμένη)

Algorithm Inorder(T)

if T

Inorder(Tleft)

print(root of T)

Inorder(Tright)

ΑποδοτικότηταΘ(n)

32

a

b c

d e

a

b c

d e

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αλγόριθμοι Δυαδικών Δένδρων (2)

33

Άλλο παράδειγμα υπολογισμός ύψους

bull h(T) = maxh(TL) h(TR) + 1 if T and h() = -1

bull Αποδοτικότητα Θ(n)

TL TR

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Σημείωμα Αναφοράς

Copyright Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Ιωάννης Μανωλόπουλος Αναστάσιος Γούναρης laquoΑλγόριθμοι raquo Έκδοση 10 Θεσσαλονίκη 2015 Διαθέσιμο από τη δικτυακή διεύθυνσηhttpeclassauthgrcoursesOCRS417

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons Αναφορά -Μη Εμπορική Χρήση - Παρόμοια Διανομή 40 [1] ή μεταγενέστερη Διεθνής Έκδοση Εξαιρούνται τα αυτοτελή έργα τρίτων πχ φωτογραφίες διαγράμματα κλπ τα οποία εμπεριέχονται σε αυτό και τα οποία αναφέρονται μαζί με τους όρους χρήσης τους στο laquoΣημείωμα Χρήσης Έργων Τρίτωνraquo

Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο

για εμπορική χρήση εφόσον αυτό του ζητηθεί

Ως Μη Εμπορική ορίζεται η χρήση

bull που δεν περιλαμβάνει άμεσο ή έμμεσο οικονομικό όφελος από την χρήση του έργου για το διανομέα του έργου και αδειοδόχο

bull που δεν περιλαμβάνει οικονομική συναλλαγή ως προϋπόθεση για τη χρήση ή πρόσβαση στο έργο

bull που δεν προσπορίζει στο διανομέα του έργου και αδειοδόχο έμμεσο οικονομικό όφελος (πχ διαφημίσεις) από την προβολή του έργου σε διαδικτυακό τόπο

[1] httpcreativecommonsorglicensesby-nc-sa40

Σημείωμα Αδειοδότησης

ΑΡΙΣΤΟΤΕΛΕΙΟ

ΠΑΝΕΠΙΣΤΗΜΙΟ

ΘΕΣΣΑΛΟΝΙΚΗΣ

ΑΝΟΙΚΤΑ

ΑΚΑΔΗΜΑΪΚΑ

ΜΑΘΗΜΑΤΑ

Τέλος ενότητας

Επεξεργασία Ανδρέας ΚοσματόπουλοςΘεσσαλονίκη Αύγουστος 2015

ΑΡΙΣΤΟΤΕΛΕΙΟ

ΠΑΝΕΠΙΣΤΗΜΙΟ

ΘΕΣΣΑΛΟΝΙΚΗΣ

Σημειώματα

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Σημείωμα Ιστορικού Εκδόσεων Έργου

Το παρόν έργο αποτελεί την έκδοση 100

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Διατήρηση Σημειωμάτων

Οποιαδήποτε αναπαραγωγή ή διασκευή του υλικού θα πρέπει να συμπεριλαμβάνει

το Σημείωμα Αναφοράς

το Σημείωμα Αδειοδότησης

τη δήλωση Διατήρησης Σημειωμάτων

το Σημείωμα Χρήσης Έργων Τρίτων (εφόσον υπάρχει)

μαζί με τους συνοδευόμενους υπερσυνδέσμους

Page 33: ΑΛΟΡΙΘΜΟΙ · 2015. 9. 9. · Αλγόριθμος QuickHull (2) •πολογισμός του κυρτού (επάνω)περιβλήματος για το S 1 –ρίσκουμε

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Αλγόριθμοι Δυαδικών Δένδρων (2)

33

Άλλο παράδειγμα υπολογισμός ύψους

bull h(T) = maxh(TL) h(TR) + 1 if T and h() = -1

bull Αποδοτικότητα Θ(n)

TL TR

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Σημείωμα Αναφοράς

Copyright Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Ιωάννης Μανωλόπουλος Αναστάσιος Γούναρης laquoΑλγόριθμοι raquo Έκδοση 10 Θεσσαλονίκη 2015 Διαθέσιμο από τη δικτυακή διεύθυνσηhttpeclassauthgrcoursesOCRS417

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons Αναφορά -Μη Εμπορική Χρήση - Παρόμοια Διανομή 40 [1] ή μεταγενέστερη Διεθνής Έκδοση Εξαιρούνται τα αυτοτελή έργα τρίτων πχ φωτογραφίες διαγράμματα κλπ τα οποία εμπεριέχονται σε αυτό και τα οποία αναφέρονται μαζί με τους όρους χρήσης τους στο laquoΣημείωμα Χρήσης Έργων Τρίτωνraquo

Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο

για εμπορική χρήση εφόσον αυτό του ζητηθεί

Ως Μη Εμπορική ορίζεται η χρήση

bull που δεν περιλαμβάνει άμεσο ή έμμεσο οικονομικό όφελος από την χρήση του έργου για το διανομέα του έργου και αδειοδόχο

bull που δεν περιλαμβάνει οικονομική συναλλαγή ως προϋπόθεση για τη χρήση ή πρόσβαση στο έργο

bull που δεν προσπορίζει στο διανομέα του έργου και αδειοδόχο έμμεσο οικονομικό όφελος (πχ διαφημίσεις) από την προβολή του έργου σε διαδικτυακό τόπο

[1] httpcreativecommonsorglicensesby-nc-sa40

Σημείωμα Αδειοδότησης

ΑΡΙΣΤΟΤΕΛΕΙΟ

ΠΑΝΕΠΙΣΤΗΜΙΟ

ΘΕΣΣΑΛΟΝΙΚΗΣ

ΑΝΟΙΚΤΑ

ΑΚΑΔΗΜΑΪΚΑ

ΜΑΘΗΜΑΤΑ

Τέλος ενότητας

Επεξεργασία Ανδρέας ΚοσματόπουλοςΘεσσαλονίκη Αύγουστος 2015

ΑΡΙΣΤΟΤΕΛΕΙΟ

ΠΑΝΕΠΙΣΤΗΜΙΟ

ΘΕΣΣΑΛΟΝΙΚΗΣ

Σημειώματα

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Σημείωμα Ιστορικού Εκδόσεων Έργου

Το παρόν έργο αποτελεί την έκδοση 100

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Διατήρηση Σημειωμάτων

Οποιαδήποτε αναπαραγωγή ή διασκευή του υλικού θα πρέπει να συμπεριλαμβάνει

το Σημείωμα Αναφοράς

το Σημείωμα Αδειοδότησης

τη δήλωση Διατήρησης Σημειωμάτων

το Σημείωμα Χρήσης Έργων Τρίτων (εφόσον υπάρχει)

μαζί με τους συνοδευόμενους υπερσυνδέσμους

Page 34: ΑΛΟΡΙΘΜΟΙ · 2015. 9. 9. · Αλγόριθμος QuickHull (2) •πολογισμός του κυρτού (επάνω)περιβλήματος για το S 1 –ρίσκουμε

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Σημείωμα Αναφοράς

Copyright Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Ιωάννης Μανωλόπουλος Αναστάσιος Γούναρης laquoΑλγόριθμοι raquo Έκδοση 10 Θεσσαλονίκη 2015 Διαθέσιμο από τη δικτυακή διεύθυνσηhttpeclassauthgrcoursesOCRS417

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons Αναφορά -Μη Εμπορική Χρήση - Παρόμοια Διανομή 40 [1] ή μεταγενέστερη Διεθνής Έκδοση Εξαιρούνται τα αυτοτελή έργα τρίτων πχ φωτογραφίες διαγράμματα κλπ τα οποία εμπεριέχονται σε αυτό και τα οποία αναφέρονται μαζί με τους όρους χρήσης τους στο laquoΣημείωμα Χρήσης Έργων Τρίτωνraquo

Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο

για εμπορική χρήση εφόσον αυτό του ζητηθεί

Ως Μη Εμπορική ορίζεται η χρήση

bull που δεν περιλαμβάνει άμεσο ή έμμεσο οικονομικό όφελος από την χρήση του έργου για το διανομέα του έργου και αδειοδόχο

bull που δεν περιλαμβάνει οικονομική συναλλαγή ως προϋπόθεση για τη χρήση ή πρόσβαση στο έργο

bull που δεν προσπορίζει στο διανομέα του έργου και αδειοδόχο έμμεσο οικονομικό όφελος (πχ διαφημίσεις) από την προβολή του έργου σε διαδικτυακό τόπο

[1] httpcreativecommonsorglicensesby-nc-sa40

Σημείωμα Αδειοδότησης

ΑΡΙΣΤΟΤΕΛΕΙΟ

ΠΑΝΕΠΙΣΤΗΜΙΟ

ΘΕΣΣΑΛΟΝΙΚΗΣ

ΑΝΟΙΚΤΑ

ΑΚΑΔΗΜΑΪΚΑ

ΜΑΘΗΜΑΤΑ

Τέλος ενότητας

Επεξεργασία Ανδρέας ΚοσματόπουλοςΘεσσαλονίκη Αύγουστος 2015

ΑΡΙΣΤΟΤΕΛΕΙΟ

ΠΑΝΕΠΙΣΤΗΜΙΟ

ΘΕΣΣΑΛΟΝΙΚΗΣ

Σημειώματα

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Σημείωμα Ιστορικού Εκδόσεων Έργου

Το παρόν έργο αποτελεί την έκδοση 100

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Διατήρηση Σημειωμάτων

Οποιαδήποτε αναπαραγωγή ή διασκευή του υλικού θα πρέπει να συμπεριλαμβάνει

το Σημείωμα Αναφοράς

το Σημείωμα Αδειοδότησης

τη δήλωση Διατήρησης Σημειωμάτων

το Σημείωμα Χρήσης Έργων Τρίτων (εφόσον υπάρχει)

μαζί με τους συνοδευόμενους υπερσυνδέσμους

Page 35: ΑΛΟΡΙΘΜΟΙ · 2015. 9. 9. · Αλγόριθμος QuickHull (2) •πολογισμός του κυρτού (επάνω)περιβλήματος για το S 1 –ρίσκουμε

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons Αναφορά -Μη Εμπορική Χρήση - Παρόμοια Διανομή 40 [1] ή μεταγενέστερη Διεθνής Έκδοση Εξαιρούνται τα αυτοτελή έργα τρίτων πχ φωτογραφίες διαγράμματα κλπ τα οποία εμπεριέχονται σε αυτό και τα οποία αναφέρονται μαζί με τους όρους χρήσης τους στο laquoΣημείωμα Χρήσης Έργων Τρίτωνraquo

Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο

για εμπορική χρήση εφόσον αυτό του ζητηθεί

Ως Μη Εμπορική ορίζεται η χρήση

bull που δεν περιλαμβάνει άμεσο ή έμμεσο οικονομικό όφελος από την χρήση του έργου για το διανομέα του έργου και αδειοδόχο

bull που δεν περιλαμβάνει οικονομική συναλλαγή ως προϋπόθεση για τη χρήση ή πρόσβαση στο έργο

bull που δεν προσπορίζει στο διανομέα του έργου και αδειοδόχο έμμεσο οικονομικό όφελος (πχ διαφημίσεις) από την προβολή του έργου σε διαδικτυακό τόπο

[1] httpcreativecommonsorglicensesby-nc-sa40

Σημείωμα Αδειοδότησης

ΑΡΙΣΤΟΤΕΛΕΙΟ

ΠΑΝΕΠΙΣΤΗΜΙΟ

ΘΕΣΣΑΛΟΝΙΚΗΣ

ΑΝΟΙΚΤΑ

ΑΚΑΔΗΜΑΪΚΑ

ΜΑΘΗΜΑΤΑ

Τέλος ενότητας

Επεξεργασία Ανδρέας ΚοσματόπουλοςΘεσσαλονίκη Αύγουστος 2015

ΑΡΙΣΤΟΤΕΛΕΙΟ

ΠΑΝΕΠΙΣΤΗΜΙΟ

ΘΕΣΣΑΛΟΝΙΚΗΣ

Σημειώματα

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Σημείωμα Ιστορικού Εκδόσεων Έργου

Το παρόν έργο αποτελεί την έκδοση 100

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Διατήρηση Σημειωμάτων

Οποιαδήποτε αναπαραγωγή ή διασκευή του υλικού θα πρέπει να συμπεριλαμβάνει

το Σημείωμα Αναφοράς

το Σημείωμα Αδειοδότησης

τη δήλωση Διατήρησης Σημειωμάτων

το Σημείωμα Χρήσης Έργων Τρίτων (εφόσον υπάρχει)

μαζί με τους συνοδευόμενους υπερσυνδέσμους

Page 36: ΑΛΟΡΙΘΜΟΙ · 2015. 9. 9. · Αλγόριθμος QuickHull (2) •πολογισμός του κυρτού (επάνω)περιβλήματος για το S 1 –ρίσκουμε

ΑΡΙΣΤΟΤΕΛΕΙΟ

ΠΑΝΕΠΙΣΤΗΜΙΟ

ΘΕΣΣΑΛΟΝΙΚΗΣ

ΑΝΟΙΚΤΑ

ΑΚΑΔΗΜΑΪΚΑ

ΜΑΘΗΜΑΤΑ

Τέλος ενότητας

Επεξεργασία Ανδρέας ΚοσματόπουλοςΘεσσαλονίκη Αύγουστος 2015

ΑΡΙΣΤΟΤΕΛΕΙΟ

ΠΑΝΕΠΙΣΤΗΜΙΟ

ΘΕΣΣΑΛΟΝΙΚΗΣ

Σημειώματα

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Σημείωμα Ιστορικού Εκδόσεων Έργου

Το παρόν έργο αποτελεί την έκδοση 100

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Διατήρηση Σημειωμάτων

Οποιαδήποτε αναπαραγωγή ή διασκευή του υλικού θα πρέπει να συμπεριλαμβάνει

το Σημείωμα Αναφοράς

το Σημείωμα Αδειοδότησης

τη δήλωση Διατήρησης Σημειωμάτων

το Σημείωμα Χρήσης Έργων Τρίτων (εφόσον υπάρχει)

μαζί με τους συνοδευόμενους υπερσυνδέσμους

Page 37: ΑΛΟΡΙΘΜΟΙ · 2015. 9. 9. · Αλγόριθμος QuickHull (2) •πολογισμός του κυρτού (επάνω)περιβλήματος για το S 1 –ρίσκουμε

ΑΡΙΣΤΟΤΕΛΕΙΟ

ΠΑΝΕΠΙΣΤΗΜΙΟ

ΘΕΣΣΑΛΟΝΙΚΗΣ

Σημειώματα

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Σημείωμα Ιστορικού Εκδόσεων Έργου

Το παρόν έργο αποτελεί την έκδοση 100

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Διατήρηση Σημειωμάτων

Οποιαδήποτε αναπαραγωγή ή διασκευή του υλικού θα πρέπει να συμπεριλαμβάνει

το Σημείωμα Αναφοράς

το Σημείωμα Αδειοδότησης

τη δήλωση Διατήρησης Σημειωμάτων

το Σημείωμα Χρήσης Έργων Τρίτων (εφόσον υπάρχει)

μαζί με τους συνοδευόμενους υπερσυνδέσμους

Page 38: ΑΛΟΡΙΘΜΟΙ · 2015. 9. 9. · Αλγόριθμος QuickHull (2) •πολογισμός του κυρτού (επάνω)περιβλήματος για το S 1 –ρίσκουμε

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Σημείωμα Ιστορικού Εκδόσεων Έργου

Το παρόν έργο αποτελεί την έκδοση 100

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Διατήρηση Σημειωμάτων

Οποιαδήποτε αναπαραγωγή ή διασκευή του υλικού θα πρέπει να συμπεριλαμβάνει

το Σημείωμα Αναφοράς

το Σημείωμα Αδειοδότησης

τη δήλωση Διατήρησης Σημειωμάτων

το Σημείωμα Χρήσης Έργων Τρίτων (εφόσον υπάρχει)

μαζί με τους συνοδευόμενους υπερσυνδέσμους

Page 39: ΑΛΟΡΙΘΜΟΙ · 2015. 9. 9. · Αλγόριθμος QuickHull (2) •πολογισμός του κυρτού (επάνω)περιβλήματος για το S 1 –ρίσκουμε

ΑριστοτέλειοΠανεπιστήμιοΘεσσαλονίκης

Αλγόριθμοι

Τμήμα Πληροφορικής ΑΠΘ

Διατήρηση Σημειωμάτων

Οποιαδήποτε αναπαραγωγή ή διασκευή του υλικού θα πρέπει να συμπεριλαμβάνει

το Σημείωμα Αναφοράς

το Σημείωμα Αδειοδότησης

τη δήλωση Διατήρησης Σημειωμάτων

το Σημείωμα Χρήσης Έργων Τρίτων (εφόσον υπάρχει)

μαζί με τους συνοδευόμενους υπερσυνδέσμους