(7 ο ) ΔΙΑΙΡΕΙ & ΒΑΣΙΛΕΥΕ Ι: «ταξινόμηση» (8 ο ) ΔΙΑΙΡΕΙ & ΒΑΣΙΛΕΥΕ ΙΙ: «κυρτό περίβλημα»

Σχετικά έγγραφα
Ας υποθέσουμε ότι ο παίκτης Ι διαλέγει πρώτος την τυχαιοποιημένη στρατηγική (x 1, x 2 ), x 1, x2 0,

Αποδεικτικές Διαδικασίες και Μαθηματική Επαγωγή.

HY 280. θεμελιακές έννοιες της επιστήμης του υπολογισμού ΑΣΚΗΣΕΙΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ. Γεώργιος Φρ.

(13 ο ) ΔΥΝΑΜΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΙII: «βέλτιστο στατικό ευρετήριο»

(3 ο ) Εξαντλητική αναζήτηση I: μεταθέσεις & υποσύνολα (4 o ) Εξαντλητική αναζήτηση II: συνδυασμοί, διατάξεις & διαμερίσεις

{ i f i == 0 and p > 0

ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ Γ ΤΑΞΗ

Αναγνώριση Προτύπων. Σήμερα! Λόγος Πιθανοφάνειας Πιθανότητα Λάθους Κόστος Ρίσκο Bayes Ελάχιστη πιθανότητα λάθους για πολλές κλάσεις

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Εαρινό Εξάμηνο

Αναγνώριση Προτύπων. Σημερινό Μάθημα

( ) Π. ΚΡΗΤΗΣ, ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΗΥ 380, «ΑΛΓΟΡΙΘΜΟΙ & ΠΟΛΥΠΛΟΚΟΤΗΤΑ» Φ 03: ΑΣΥΜΠΤΩΤΙΚΕΣ ΕΚΦΡΑΣΕΙΣ

«ΔΙΑΚΡΙΤΑ ΜΑΘΗΜΑΤΙΚΑ»

(20 ο ) ΣΤΑΔΙΑΚΕΣ ΚΑΤΑΣΚΕΥΕΣ Ι: ΑΠΛΗΣΤΟΙ ΑΛΓΟΡΙΘΜΟΙ

Οι γέφυρες του ποταμού... Pregel (Konigsberg)

Εξαναγκασμένες ταλαντώσεις, Ιδιοτιμές με πολλαπλότητα, Εκθετικά πινάκων. 9 Απριλίου 2013, Βόλος

Εισαγωγικά. 1.1 Η σ-αλγεβρα ως πληροφορία

( ιμερείς) ΙΜΕΛΕΙΣ ΣΧΕΣΕΙΣ Α Β «απεικονίσεις»

Η ανισότητα α β α±β α + β με α, β C και η χρήση της στην εύρεση ακροτάτων.

(5 ο ) Η «πλοκή» ενός αλγορίθμου: η βάση μιας αξιολόγησης Ι (6 ο ) Η «πλοκή» ενός αλγορίθμου: ο Ο Ω Θ συμβολισμός ΙΙ

5.1 Μετρήσιμες συναρτήσεις

Εφαρμογές στην κίνηση Brown

Το κράτος είναι φτιαγμένο για τον άνθρωπο και όχι ο άνθρωπος για το κράτος. A. Einstein Πηγή:

ΣΧΟΛΙΚΟ ΕΤΟΣ ΕΥΘΥΓΡΑΜΜΗ ΟΜΑΛΗ ΚΙΝΗΣΗ ΤΡΙΩΡΗ ΓΡΑΠΤΗ ΕΞΕΤΑΣΗ ΣΤΗ ΦΥΣΙΚΗ A ΛΥΚΕΙΟΥ. Ονοματεπώνυμο Τμήμα

ΑΣΕΠ 2000 ΑΣΕΠ 2000 Εμπορική Τράπεζα 1983 Υπουργείο Κοιν. Υπηρ. 1983

Επίλυση ειδικών μορφών ΣΔΕ

Ευρωπαϊκά παράγωγα Ευρωπαϊκά δικαιώματα

Αναλυτικές ιδιότητες

Εστω X σύνολο και A μια σ-άλγεβρα στο X. Ονομάζουμε το ζεύγος (X, A) μετρήσιμο χώρο.

(1 ο ) Γιατί «αλγόριθμοι» (υποχρεωτικά);

( μ, λ ) ( i ) ( ii ) ( iii ) ( iv ) ( v )

Π. ΚΡΗΤΗΣ, ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΗΥ 380, «ΑΛΓΟΡΙΘΜΟΙ & ΠΟΛΥΠΛΟΚΟΤΗΤΑ» Φ 06: ΧΡΗΣΗ ΔΟΜΩΝ ΔΕΔΟΜΕΝΩΝ

ΚΛΑΔΟΣ: ΠΕ11 ΦΥΣΙΚΗΣ ΑΓΩΓΗΣ

(19 ο ) ΚΛΑΣΜΑΤΙΚΗ ΑΝΑΓΩΓΗ IΙΙ: «εντοπισμός σημείου σε τριγωνοποίηση»

21/11/2005 Διακριτά Μαθηματικά. Γραφήματα ΒΑΣΙΚΗ ΟΡΟΛΟΓΙΑ : ΜΟΝΟΠΑΤΙΑ ΚΑΙ ΚΥΚΛΟΙ Δ Ι. Γεώργιος Βούρος Πανεπιστήμιο Αιγαίου

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Εαρινό Εξάμηνο

Έννοια. Η αποδοχή της κληρονομίας αποτελεί δικαίωμα του κληρονόμου, άρα δεν

Αναγνώριση Προτύπων. Σημερινό Μάθημα

Π. ΚΡΗΤΗΣ, ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΗΥ 380, «ΑΛΓΟΡΙΘΜΟΙ & ΠΟΛΥΠΛΟΚΟΤΗΤΑ» Φ 01: ΕΞΑΝΤΛΗΤΙΚΗ ΑΝΑΖΗΤΗΣΗ

ΣΤΟ ΙΑΤΡΕΙΟ. Με την πιστοποίηση του αποκτά πρόσβαση στο περιβάλλον του ιατρού που παρέχει η εφαρμογή.

Φροντιστήριο 2: Ανάλυση Αλγόριθμου. Νικόλας Νικολάου ΕΠΛ432: Κατανεμημένοι Αλγόριθμοι 1 / 10

Δ Ι Α Κ Ρ Ι Τ Α Μ Α Θ Η Μ Α Τ Ι Κ Α. 1η σειρά ασκήσεων

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Εαρινό Εξάμηνο

ΠΑΝΕΠΙΣΤΗΜΙΑΚΑ ΦΡΟΝΤΙΣΤΗΡΙΑ ΚΟΛΛΙΝΤΖΑ ΜΑΘΗΜΑ: ΕΡΩΤΗΣΕΙΣ ΟΙΚΟΝΟΜΙΚΗΣ ΘΕΩΡΙΑΣ

Παραβολή ψ=αχ 2 +βχ+γ, α 0. Η παραβολή ψ = αχ 2. Γενικά : Κάθε συνάρτηση της μορφής ψ=αχ 2 + βχ +γ, α 0 λέγεται τετραγωνική συνάρτηση.

"Η απεραντοσύνη του σύμπαντος εξάπτει τη φαντασία μου. Υπάρχει ένα τεράστιο σχέδιο, μέρος του οποίου ήμουν κι εγώ".

Ταξινόμηση των μοντέλων διασποράς ατμοσφαιρικών ρύπων βασισμένη σε μαθηματικά κριτήρια.

Eισηγητής: Μουσουλή Μαρία

Μονάδες α. Να γράψετε στο τετράδιό σας τον παρακάτω πίνακα σωστά συµπληρωµένο.

Αναγνώριση Προτύπων. Σημερινό Μάθημα

ΜΙΚΡΟΟΙΚΟΝΟΜΙΚΗ Η ΚΑΤΑΝΑΛΩΤΙΚΗ ΑΠΟΦΑΣΗ. Άσκηση με θέμα τη μεγιστοποίηση της χρησιμότητας του καταναλωτή

602. Συναρτησιακή Ανάλυση. Υποδείξεις για τις Ασκήσεις

Martingales. 3.1 Ορισμός και παραδείγματα

ΣΤΟ ΦΑΡΜΑΚΕΙΟ. Με την πιστοποίηση του έχει πρόσβαση στο περιβάλλον του φαρμακείου που παρέχει η εφαρμογή.

ΜΑΘΗΜΑ: ΕΜΠΟΡΙΚΟ ΔΙΚΑΙΟ

τους στην Κρυπτογραφία και τα

Ο Ισχυρός Νόμος των Μεγάλων Αριθμών

Σχέσεις και ιδιότητές τους

ΠΑΝΕΠΙΣΤΗΜΙΑΚΑ ΦΡΟΝΤΙΣΤΗΡΙΑ ΚΟΛΛΙΝΤΖΑ ΜΑΘΗΜΑ: ΟΙΚΟΝΟΜΙΚΗ ΘΕΩΡΙΑ

(14 ο,15 ο,16 ο ) ΟΡΘΟΤΗΤΑ ΕΝΟΣ ΑΛΓΟΡΙΘΜΟΥ: ΕΝΟΤΗΤΑ Ι ΙΙ ΙΙΙ

ΜΑΘΗΜΑ: ΟΙΚΟΝΟΜΙΚΗ ΘΕΩΡΙΑ

Π. ΚΡΗΤΗΣ, ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΗΥ 380, «ΑΛΓΟΡΙΘΜΟΙ & ΠΟΛΥΠΛΟΚΟΤΗΤΑ» Φ 07: ΔΥΝΑΜΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

ΣΥΝΟΛΑ (προσέξτε τα κοινά χαρακτηριστικά των παρακάτω προτάσεων) Οι άνθρωποι που σπουδάζουν ΤΠ&ΕΣ και βρίσκονται στην αίθουσα

Η εξίσωση Black-Scholes

Ανεξαρτησία Ανεξαρτησία για οικογένειες συνόλων και τυχαίες μεταβλητές

1. Εστω ότι A, B, C είναι γενικοί 2 2 πίνακες, δηλαδή, a 21 a, και ανάλογα για τους B, C. Υπολογίστε τους πίνακες (A B) C και A (B C) και

17 Μαρτίου 2013, Βόλος

Αρτιες και περιττές συναρτήσεις

G περιέχει τουλάχιστον μία ακμή στο S. spanning tree στο γράφημα G.

ΤΑΞΙΝΟΜΗΣΗ ΟΡΓΑΝΙΣΜΩΝ

Αλγόριθμοι & Βελτιστοποίηση

Ανελίξεις σε συνεχή χρόνο

Γενικό Λύκειο Μαραθοκάμπου Σάμου. Άλγεβρα Β λυκείου. 13 Οκτώβρη 2016

23/2/07 Sleep out Πλατεία Κλαυθμώνος

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

ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ. Πρώτη Γραπτή Εργασία. Εισαγωγή στους υπολογιστές Μαθηματικά

Ανεξαρτησία Ανεξαρτησία για οικογένειες συνόλων και τυχαίες μεταβλητές

Αρτιες και περιττές συναρτήσεις

Ο τύπος του Itô. f (s) ds (12.1) f (g(s)) dg(s). (12.2) t f (B s ) db s + 1 2

ΑΠΟΛΥΤΗΡΙΕΣ ΕΞΕΤΑΣΕΙΣ Γ ΤΑΞΗΣ ΗΜΕΡΗΣΙΟΥ ΓΕΝΙΚΟΥ ΛΥΚΕΙΟΥ ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ: ΑΡΧΕΣ ΟΙΚΟΝΟΜΙΚΗΣ ΘΕΩΡΙΑΣ ΜΑΘΗΜΑ ΕΠΙΛΟΓΗΣ Γ ΛΥΚΕΙΟΥ

ΑΡΧΗ 1ΗΣ ΣΕΛΙ ΑΣ Β ΤΑΞΗ. ΘΕΜΑ 1ο

Προτεινόμενα θέματα στο μάθημα. Αρχές Οικονομικής Θεωρίας ΟΜΑΔΑ Α. Στις προτάσεις από Α.1. μέχρι και Α10 να γράψετε στο τετράδιό σας τον αριθμό της

Ανεξαρτησία Ανεξαρτησία για οικογένειες συνόλων και τυχαίες μεταβλητές

Eισηγητής: Μουσουλή Μαρία

Επιχειρησιακή Ερευνα Ι

Μαθηματικά Πληροφορικής

Εργαστηριακή Άσκηση Θερμομόρφωση (Thermoforming)

Φυσική Θετικής & Τεχνολογικής Κατεύθυνσης Β Λυκείου 3 ο Κεφάλαιο Ηλεκτρικό Πεδίο. Ηλεκτρικό πεδίο. Παρασύρης Κώστας Φυσικός Ηράκλειο Κρήτης

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

Φυσική Β Λυκείου Θετικής & Τεχνολογικής Κατεύθυνσης Παναγόπουλος Γιώργος Φυσικός

Τρίτη, 05 Ιουνίου 2001 ΤΕΧΝΟΛΟΓΙΚΗ ΚΑΤΕΥΘΥΝΣΗ Γ ΛΥΚΕΙΟΥ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ

Εισαγωγικές Διαλέξεις στην Θεωρία των Αλυσίδων Markov και των Στοχαστικών Ανελίξεων. Οικονομικό Πανεπιστήμιο Αθηνών

ΑΡΧΗ 1ΗΣ ΣΕΛΙ ΑΣ Β ΤΑΞΗ ΚΕΙΜΕΝΟ. Πέµπτη 19 Νοεµβρίου Αγαπητή Κίττυ,

- 1 - Ποιοι κερδίζουν από το εμπόριο αγαθών και υπηρεσιών; Γιατί η άμεση ανταλλαγή αγαθών, ορισμένες φορές, είναι δύσκολο να

Το υπόδειγμα IS-LM: Εισαγωγικά

Ημέρα 3 η. (α) Aπό την εργασιακή διαδικασία στη διαδικασία παραγωγής (β) Αξία του προϊόντος και αξία της εργασιακής δύναμης

ΘΕΩΡΙΑ ΣΥΝΟΛΩΝ: μια σύνοψη των θεμελιακών χαρακτηριστικών.

2. Κατάθεσε κάποιος στην Εθνική Τράπεζα 4800 με επιτόκιο 3%. Μετά από πόσο χρόνο θα πάρει τόκο 60 ; α) 90 ημέρες β) 1,5 έτη γ) 5 μήνες δ) 24 μήνες

Δίκαιο και Οικονομικά: Οι Εξετάσεις

Παντού σε αυτό το κεφάλαιο, αν δεν αναφέρεται κάτι διαφορετικό, δουλεύουμε σε ένα χώρο πιθανότητας (Ω, F, P) και η G F είναι μια σ-άλγεβρα.

Εισαγωγή στη Μιγαδική Ανάλυση. (Πρώτη Ολοκληρωμένη Γραφή)

Transcript:

(7 ο ) ΔΙΑΙΡΕΙ & ΒΑΣΙΛΕΥΕ Ι: «ταξινόμηση» (8 ο ) ΔΙΑΙΡΕΙ & ΒΑΣΙΛΕΥΕ ΙΙ: «κυρτό περίβλημα» Σύντομα προλεγόμενα: πού να ψάξουμε για δραστικούς αλγορίθμους; Θα αρχίσουμε από αυτό το κεφάλαιο την ξενάγησή μας σε μια σειρά από τεχνικές σχεδίασης «δραστικών» αλγορίθμων. Είναι αλήθεια ότι δεν έχουν απόλυτη ισχύ, και δεν είναι σε θέση να λύσουν κάθε τυχόν πρόβλημα που ίσως συναντήσουμε. Είναι όμως αρκετά απλές, είναι θεμελιακές και έχουν φανεί χρήσιμες σε εξαιρετικά μεγάλο αριθμό περιπτώσεων. Ακόμα και εάν δεν είναι σε θέση να λύσουν το 100% το προβλήματός σας, κάποιο ρόλο κατά πάσα πιθανότητα θα παίξουν για την επίλυσή του... Είδαμε στα προηγούμενα ότι μια απλοϊκή λύση όπως η εξαντλητική αναζήτηση οδηγεί συχνότατα στην διάνυση ενός τεράστιου «χώρου» από πιθανές απαντήσεις, συχνά τόσο μεγάλου ώστε να είναι πρακτικώς ανέφικτη η «εξάντλησή» του. Αυτό λοιπόν είναι το πιο θεμελιακό χαρακτηριστικό ενός «δραστικού» αλγορίθμου: η δραστική μείωση του χώρου αναζήτησης, και επομένου του χρόνου που θα κάνουμε για να τον εξετάσουμε. Υπάρχει όμως και ένα δεύτερο χαρακτηριστικό, πανταχού παρόν σε όλη την σχεδίαση αλγορίθμων, αν όχι σε όλα τα μαθηματικά, (και αν όχι σε όλων των ειδών τις εφαρμογές): είναι η αναγωγή ενός προβλήματος σε άλλα, κατ ευχήν και ελπίδα, απλούστερα. Αυτό που έχει αποδειχθεί αποτελεσματικό για την σχεδίαση δραστικών αλγορίθμων, είναι ο συνδυασμός αυτών των δύο «ιδεών», της αναγωγής ενός προβλήματος σε άλλα, και της δραστικής μείωσης του μεγέθους του προβλήματος. Ας φανταστούμε ότι έχουμε να λύσουμε ένα πρόβλημα Q, και ότι αντιμετωπίζουμε ένα συγκεκριμμένο στιγμιότυπο αυτού με Ν δεδομένα. Θα μπορούσε κάποιος να τα αναγάγει σε άλλο πρόβλημα Q, (ένα ή περισσότερα), να δείξει δηλαδή ότι αν είχαμε την λύση αυτών των 2 ων προβλημάτων τότε θα μπορούσαμε να λύσουμε και το 1 ο. Αυτό συμβαίνει συνέχεια στη ίδια την ζωή μας: θέλουμε να βιδώσουμε 100 βίδες και λέμε «τί καλά που θα ήταν να είχαμε ένα ηλεκτρικό κατσαβίδι», μόνο δεν τυχαίνει πάντοτε να έχουμε τα κατάλληλα εργαλεία... Ας αναλογιστούμε για λίγο, έστω διαισθητικά, τι σχέση θα μπορούσε να είχαν δύο προβλήματα. Σε μια πρώτη περίπτωση η σχεδίαση ενός αλγορίθμου για το 2 ο πρόβλημα θα μπορούσε να είναι δυσκολότερο προβλημα από ότι για το 1 ου. Ποιό το όφελος; Κανένα, εκτός εάν κάποιος άλλο έχει ήδη λύσει αυτό το πρόβλημα... Τότε όμως εμείς θα είμαστε σε θέση να καρπωθούμε αυτη τη λύση! Και πράγματι αυτό συμβαίνει διαρκώς «στη πράξη»: λύνουμε σιγά σιγά μια σειρά από μαθηματικά προβλήματα, και ανακοινώνουμε τη λύση τους, ώστε να είναι διαθέσιμη σε όλους. Ένα λοιπόν καθήκον που έχουμε είναι να μάθουμε ποια μεγάλα προβλήματα είναι ήδη λυμμένα και να μάθουμε πως να αξιοποιούμε την λύση τους. Αυτό βέβαια δεν μας απαντά το ερώτημα «και πού, και πώς, βρέθηκαν αυτές οι λύσεις;» δηλαδή, πού και πώς θα ψάξουμε να βρούμε τη λύση σε τυχόν πρόβλημα που δεν μπορεί να λυθεί με τα όσα γνωρίζουμε ήδη; Γι αυτό πρέπει να δούμε και την δεύτερη περίπτωση του ζητήματος μας: η αλγοριθμική λύση για το ή τα άλλα προβλήματα Q να είναι πιο εύκολη από εκείνη του 1 ου. Η σχέση όμως των Q και Q δημιουργεί απορίες: γιατί κάποιο άλλο πρόβλημα Q να βοηθάει το δικό μας τί σχέση θα μπορούσε να έχει μαζί του; Υπάρχει όμως (πάντοτε!) ένα πρόβλημα που έχει ορατή και προφανή σχέση με το δικό μας το ίδιο το πρόβλημα Q. Και εννοούμε εδώ ότι για την επίλυση μεγαλύτερων στιγμιοτύπων του Ν ενδέχεται να είναι χρήσιμα στιγμιότυπα μικρότερου μεγέθους. Αυτή είναι η ιδέα της αναδρομής στους αλγορίθμους: για να λύσω ένα πρόβλημα Q μεγέθους Ν, χρησιμοποιώ υπο περιπτώσεις Q του ιδίου τύπου προβλήματος, αλλά μικρότερου μεγέθους Ν < Ν. Και εδώ εισέρχεται το δεύτερο χαρακτηριστικό στοιχείο που επιθυμούμε: η ανάγκη δραστικής μείωσης του χώρου αναζήτησης. Όπως θα φανεί μέσα από σειρά παραδειγμάτων, για να αποκτήσουμε δραστικούς αλγορίθμους, θα πρέπει οι αναγωγές μας να μειώνουν αξιόλογα τα μεγέθη των (κατ ευχήν βοηθητικών) υποπροβλημάτων, και εδώ «δραστικά» σημαίνει να τα μειώνουν Πανεπιστήμιο Κρήτης Τμήμα Επιστήμης Υπολογιστών Γ.Φ. Γεωργακόπουλος ver: 18/3/2014 1

«γεωμετρικά» (κατά έναν παράγοντα δηλαδή), και όχι «αριθμητικά» (κατά ένα αφαιρετέο): όπως θα φανεί συντομα, δραστική πρόοδος σημαίνει να μειώσουμε ένα μέγεθος από «Ν» σε «Ν/2» ή «Ν/8», (και όχι σε «Ν 1» ή «Ν 100»). Ας αρχίσουμε επί τέλους αυτή την ενδιαφέρουσα περιπέτεια: Το πρόβλημα της «ταξινόμησης». Η ανάγκη να ταξινομούμε δεδομένα, λ.χ. αριθμούς κατά αύξουσα σειρά, ή λέξεις κατά την λεξικογραφική σειρά, είναι ένα από τα πιο φυσικά προβλήματα που συναντάμε ακόμα και στην καθημερινή μας ζωή. Θα ήταν μεγάλη ζημιά να μην είχαμε έναν καλό αλγόριθμο γι αυτή την δουλειά. Η διατύπωση του προβλήματος είναι η εξής: «ΤΑΞΙΝΟΜΗΣΗ» ΔΙΔΕΤΑΙ: Ένας πίνακας Α με Ν αριθμούς, (και εν γένει: με στοιχεία συγκρίσιμα μεταξύ τους). ΖΗΤΕΙΤΑΙ: Ο ίδιος πίνακας. ΩΣΤΕ: α) Να είναι ταξινομημένος, δηλαδή Α[κ] Α[κ+1], κ = 1,..., Ν 1 β) (Και να περιέχει τα ίδια ένα προς ένα στοιχεία...) Πιστεύουμε ότι ο αναγνώστης θα συμφωνήσει αμέσως ότι θα ήταν γελοίο να δοκιμάσουμε όλους τους δυνατούς τρόπους ταξινόμησης (δηλαδή Ν! μεταθέσεις των στοιχείων) προκειμένου να διαλέξουμε την ίσως μία μόνον σωστή σειρά των στοιχείων. Τί καλύτερο όμως θα μπορούσαμε να κάνουμε; Μια απλή ιδέα είναι ότι στην 1 η θέση του πίνακα, θα πρέπει να έλθει το ελάχιστο εξ όλων των στοιχείων, δηλαδή το Α[1] θα πρέπει να καταστεί το ελάχιστο των Α[1]..Α[Ν]. Μετά από αυτό είναι απλό να σκεφθεί κανείς ότι εάν το ελάχιστο βρίσκεται στη θέση θ, αρκεί να εναλλάξουμε τα Α[1] και Α[θ], φέρνοντας έτσι αυτό στη 1 η θέση, ώστε να έλθουμε σε θέση να συνεχίσουμε κατά τον ίδιο τρόπο με τον υπόλοιπο πίνακα Α[2..Ν]. Αυτά μας οδηγούν στον εξής αλγόριθμο: Αλγόριθμος: ταξινόμηση ελαχίστου Ταξινόμηση(Α[1..Ν]: πίνακας αριθμών) Συνάρτηση θέση-min: αριθμός { θέση κ Για λ = κ+1 έως Ν { Εάν Α(λ)<Α(θέση) τότε θέση λ } θέση-min θέση } { Για κ = 1 έως Ν-1 { Α[κ] Α[θέση-min] } } Δεν είναι δύσκολο να δούμε την ήδη δραματική βελτίωση: ο παραπάνω αλγόριθμος έχει πλοκή Θ(Ν 2 ). Σαφώς προτιμότερο από το αφελές Ν!, αλλά για Ν = 10 6 ακόμα και αυτό μας οδηγεί ήδη σε πολύ υψηλό κόστος και στη πράξη η ταξινόμηση εκατομμυρίων στοιχείων δεν είναι ασυνήθιστο (φανταστείτε λ.χ. την ταξινόμηση του οικονομικού πληθυσμού μιας χώρας κατα ΑΦΜ.) Θα μπορούσαμε να κάνουμε κάτι καλύτερο; Σίγουρα αξίζει την προσπάθεια ας εξετάσουμε λοιπόν: θα μπορούσαμε να περικόψουμε δραστικά το μέγεθος του υπό ταξινόμηση πίνακα στο μισό, ταξινομώντας λ.χ. το 1ο μισό και, χωριστά, το 2ο μισό; Σε τί θα μας βοηθούσαν αυτά τα δύο «μισά» για να φτιάξουμε το σύνολο το ταξινομημένου πίνακα; Και επειδή τα επόμενα στηρίζονται στα προηγούμενα πρέπει εδώ να προσέξουμε ότι εάν έχουμε τα δύο μισά του πίνακά μας ταξινομημένα τότε η απάντηση στο ερώτημα «ποιό είναι το ελάχιστο στοιχείο» του πίνακα μας απαντάται με πολύ πιο εύκολο τρόπο από ότι προηγουμένως. Αν έχουμε ταξινομημένο το τμήμα Α[1..Ν/2] και το τμήμα Α[Ν/2+1..Ν] τότε το μεν ελάχιστο του 1ου μέρους βρίσκεται στην 1η θέση του 1ου μέρους, το δε ελάχιστο του 2ου μέρους στην 1η θέση του 2ου Πανεπιστήμιο Κρήτης Τμήμα Επιστήμης Υπολογιστών Γ.Φ. Γεωργακόπουλος ver: 18/3/2014 2

μέρους, και το συνολικό ελάχιστο είναι ένα εξ αυτών των δύο κάτι που ευρίσκεται με μία μόνον σύγκριση. Και μάλιστα, μετά την απομάκρυνση αυτού του ελαχίστου μένουμε πάλι με δύο ταξινομημένα τμήματα, οπότε όλα μπορούν να επαναληφθούν, και να βρούμε το εκάστοτε ελάχιστο στοιχείο πάλι σε ελάχιστα βήματα Η αναγωγή του προβλήματος σε δύο δραστικά μικρότερα στιγμιότυπα μας βοηθάει δηλαδή να απαντάμε το καίριο αλλά κατ αρχάς δαπανηρό, Θ(Ν) βημάτων), ερώτημα «πού είναι το min στοιχείο» σε ελάχιστο χρόνο σε μόλις βήματα: Αλγόριθμος: συγχωνευτική ταξινόμηση κόστος: Ταξινόμηση(Α: πίνακας αριθμών, κ..λ: θέσεις του Α) δ1, δ2: δυο αριθμοδείκτες θέσεων του πίνακα Α Συνάρτηση θέση-min: αριθμός { Περίπτωση { δ1 > μ: { θέση-min δ2, δ2 δ2+1 δ2 > λ: { θέση-min δ1, δ1 δ1+1 αλλιώς Περίπτωση { Α[δ1] < Α[δ2]: { θέση-min δ1, δ1 δ1+1 } Α[δ1] Α[δ2]: { θέση-min δ2, δ2 δ2+1 } } } } { Εάν λ>κ τότε //αλλιώς δεν έχουμε τίποτε να κάνουμε.. { μ (κ+λ) div 2 Ταξινόμηση(Α,κ,μ) Ταξινόμηση(Α,μ+1,λ) δ1 κ, δ2 μ+1 Για θ = κ έως λ { Π[θ] Α[θέση-min] } // προσωρινά Για θ = κ έως λ { Α[θ] Π[θ] } } } Τ(Ν)... Τ(Ν/2) Τ(Ν/2) Ν Ν Η ανάλυση της πλοκής του παραπάνω κώδικα είναι όμως λίγο πιο περίπλοκη: ο κώδικας αυτός είναι αναδρομικός (καλεί τον «εαυτό» του) και επομένως η ανάλυση οδηγεί σε μια αναδρομική σχέση. Από την δεξιά στήλη του παραπάνω πίνακα παίρνουμε: Τ(Ν) 2Τ(Ν/2) + Θ(Ν) «ΤΗΛΕΣΚΟΠΙΚΑ ΑΘΡΟΙΣΜΑΤΑ» Έχουμε ένα έξυπνο και απλό τέχνασμα για να λύνουμε τέτοιες σχέσεις: τις γράφουμε επανειλημμένα ώστε να απαλείφονται οι άγνωστες τιμές στο δεξιό μέρος της σχέσης, και τόσες φορές ώστε να φτάσουμε σε τιμές που δεν εξαρτώνται από το Ν: Τ(Ν) = 2 Τ(Ν/2) + Θ(Ν) 2 Τ(Ν/2) = 2 2 Τ(Ν/2 2 ) + 2 1 Θ(Ν/2 1 ) 2 2 Τ(Ν/2 2 ) = 2 3 Τ(Ν/2 3 ) + 2 2 Θ(Ν/2 2 ) 2 i Τ(Ν/2 i ) = 2 i+1 Τ(Ν/2 i+1 ) + 2 i Θ(Ν/2 i ) 2 k Τ(Ν/2 k ) = 2 k+1 Τ(Ν/2 k+1 ) + 2 k Θ(Ν/2 k ) Σταματώντας σε k τέτοιο ώστε Ν/2 k+1 = 1 δηλαδή στο (k+1) = logν, και προσθέτοντας τις ανισώσεις, τα σκιασμένα τμήματα απαλείφονται και δεν μένει παρά ο τελευταίος όρος 2 k+1 Τ(Ν/2 k+1 ) = Ν Τ(1) = Πανεπιστήμιο Κρήτης Τμήμα Επιστήμης Υπολογιστών Γ.Φ. Γεωργακόπουλος ver: 18/3/2014 3

Ν, και η στήλη των όρων δεξιά, έκαστος με τιμή Θ(Ν). Το πλήθος αυτών των όρων είναι (k+1) άρα στο τέλος λαμβάνουμε: Τ(Ν) = Θ(ΝlogΝ) Η βελτίωση σχετικά με το Θ(Ν 2 ) είναι αισθητή: ο λόγος Ν 2 προς ΝlogN ισούται Ν/logN, και αυτό σημαίνει ότι για Ν = 10 6 στοιχεία ο νέος αλγόριθμός μας θα είναι περίπου 50,000 (πενήντα χιλιάδες) φορές ταχύτερος από τον προηγούμενο. «ΔΙΑΙΡΕΙ & ΒΑΣΙΛΕΥΕ» Αξίζει να προσέξουμε στο παραπάνω τρόπο λύσης του ποβλήματος της ταξινόμησης την εμφάνιση μιας πολύ χρήσιμης τεχνικής σχεδίασης αλγορίθμων: Αρχικά διαπιστώσαμε ότι ήταν δυνατόν να κόψουμε το πρόβλημα σε δύο (ισομεγέθη στη περίπτωσή μας) υπο προβλήματα ταξινόμησης, και υποθέτοντας ότι έχουμε την λύση για αυτά τα δύο, να συνθέσουμε εξ αυτών (με μια συγχώνευση) την λύση του όλου προβλήματος. Σε αυτές τις περιπτώσεις η υπόθεση ότι μπορούμε να λύσουμε τα προκύπτοντα υποπροβλήματα είναι έγκυρη: μπορούμε πάντοτε να το κάνουμε αναδρομικά. Βέβαια κάποια στιγμή θα πρέπει να σταματήσουμε την αναδρομή, αλλά αυτό είναι σχεδόν πάντοτε δυνατόν: όταν κάποιο υπο πρόβλημα φθάσει να έχει πολύ μικρό μέγεθος τότε η λύση του είτε είναι προφανής, είτε μπορεί να πρόκυψει με ένα πολύ μικρού πια κόστους εξαντλητικό αλγόριθμο. Η τεχνική αυτή ονομάζεται «διαίρει & βασίλευε»: κατ αυτήν, στην απλούστερη μορφή της, ένα στιγμιότυπο μεγέθους Ν: α) διαιρείται σε δύο στιγμιότυπα μεγέθους Ν/2, σε χρόνο ΤΔΙΑΙΡΕΣΗ(Ν), β) έκαστο υπο στιγιότυπο λύνεται αναδρομικά σε χρόνο Τ(Ν/2), και γ) δεδομένων των λύσεων τις συνθέτουμε στη τελική λύση σε χρόνο ΤΣΥΝΘΕΣΗ(Ν). Η χρονική πλοκή της λύσης που προκύπτει έτσι είναι: Τ (Ν) ΤΔΙΑΡΕΣΗ(Ν) + 2 Τ(Ν/2) + ΤΣΥΝΘΕΣΗ(Ν) Πολλές παραλλαγές μπορούν να προκύψουν: λχ. να διαιρέσουμε το πρόβλημα σε τρία ή περισσότερα μέρη, ή να ποικίλλει ο τρόπος και χρόνος διαίρεσης / σύνθεσης. Στο πρόβλημα της ταξινόμησης είχαμε: ΤΔΙΑΡΕΣΗ(Ν) = Ο(1) ΤΣΥΝΘΕΣΗ(Ν) = Θ(Ν) Πανεπιστήμιο Κρήτης Τμήμα Επιστήμης Υπολογιστών Γ.Φ. Γεωργακόπουλος ver: 18/3/2014 4

Το πρόβλημα του «κυρτού περιβλήματος». Η γεωμετρία υπήρξε θεμελιακός κλάδος των μαθηματικών και δεν έχει παύσει να παίζει κύριο και καίριο ρόλο, και να προσφέρει εξαιρετικές θεωρίες (και προφανώς εξαιρετικά πρακτικές εφαρμογές). Στον χώρο της πληροφορική έχει δημιουργήσει ένα ολόκληρο κλάδο (την υπολογιστική γεωμετρία) και θαμάσιες εφαρμογές τα υπολογιστικά γραφικά. Δεν θα υπήρχαν 3D ταινίες ή παιγνίδια χωρίς αυτήν. Θα δούμε αμέσως στη συνέχεια ένα θεμελιακό πρόβλημα της επίπεδης γεωμετρίας. «ΚΥΡΤΟ ΠΕΡΙΒΛΗΜΑ» ΔΙΔΕΤΑΙ: Ν σημεία Ρκ, στο επίπεδο (μέσω των ρητών x,y συντεταγμένων τους). ΖΗΤΕΙΤΑΙ: Μια ακολουθία από αυτά σημεία,... ΩΣΤΕ:...να αποτελεί το «κυρτό περίβλημα» των Ν δεδομένων σημείων. Tο τί είναι το κυρτό περίβλημα είναι «οπτικά» απλό: φανταστείτε ότι σε κάθε σημείο καρφώνουμε ένα μικρό καρφί, ότι τεντώνουμε ένα λάστιχο γύρω από όλα αυτά τα καρφάκια, και το αφήνουμε να συρρικνωθεί. Αυτό θα σταθεί γύρω από μερικά «ακραία» σημεία, και θα σχηματίσει ένα κυρτό πολύγωνο. Το πολύγωνο αυτό γι αυτό μας ενδιαφέρει και η σειρά των σημείων είναι το κυρτό περίβλημα. Πιό γεωμετρικά, κάθε σύνολο Ν σημείων στο επίπεδο, χωρίζεται στα «εσωτερικά» και στα «ακραία» σημεία. «Εσωτερικό» σημεία Χ, είναι εκείνο για τα οποία μπορούμε να βρούμε τρία άλλα, Α, Β, Γ, ώστε το Χ να κείται εντός του τριγώνου ΑΒΓ που αυτά σχηματίζουν. Και «ακραίο» είναι εκείνο για τα οποία υπάρχει μια ευθεία ε που περνά από αυτό, και που αφήνει όλα τα υπόλοιπα από την ίδια πλευρά της. (Δεν είναι δύσκολο να δείτε πώς ό,τι δεν είναι ακραίο είναι εσωτερικό και αντιστρόφως.) Κυρτό περίβλημα των Ρ1,..., ΡΝ είναι το κυρτό πολύγωνο που σχηματίζουν τα ακραία σημεία εκ των Ρ1,..., ΡΝ. Ας προσπαθήσουμε να δούμε τί θα ήταν ένας «δ & β» αλγόριθμος γι αυτό το πρόβλημα. Η γεωμετρία είναι ο χώρος των μαθηματικών όπου μπορεί να ορίσεις όχι μόνον αποστάσεις, αλλά και έννοιες όπως το «μέσα» και το «έξω», το «δεξιά» και το «αριστερά», και έτσι ο φυσικός τρόπος να χωρίσουμε εδώ τα Ν σημεία είναι με μια (ας πούμε κατακόρυφη) ευθεία, σε όσα είναι αριστερά αυτής και όσα δεξιά αυτής. Μπορούμε μάλιστα να κάνουμε αυτά τα δύο σύνολα (σχεδόν) ισοπληθή. Ένας απλός τρόπος να το κάνουμε αυτό είναι να ταξινομήσουμε τα σημεία (γνωρίζουμε πια να το κάνουμε αυτό γρήγορα), ως προς την x συντεταγμένη. Μια οποιαδήποτε κατακόρυφη ευθεία ανάμεσα στα υπ.αρ. Ν /2 και Ν /2+1 σημεία, χωρίζει τα σημεία μας σε δύο ισοπληθή σύνολα, αυτά με τα σημεία υπ. αρ. 1 έως Ν /2, και Ν /2+1 έως Ν. Προσέξτε ότι αυτά μας παραδίδονται επίσης ταξινομημένα, και επομένως η εν συνεχεία διαίρεση και αυτών σε δύο ημίσυ (με Ν/4 σημεία το καθένα) συνεχίζει να γίνεται εύκολα. (Εδώ, όπως και σε άλλες περιπτώσεις παραλείπουμε, τουλάχιστον σε πρώτη φάση, να ασχοληθούμε με το πώς θα χειριστούμε εκφυλισμένες καταστάσεις, όπως λ.χ. το τί θα συνέβαινε εάν όλα τα σημεία κείνται επί μιας κατακορύφου ευθείας, ή έστω και μόνον τρία από αυτά. Αυτές οι καταστάσεις όχι μόνον έχουν πρακτικώς μηδενική πιθανότητα, αλλά και επί της ουσίας δεν είναι αυτές εκείνες που καθορίζουν την μορφή του αλγορίθμου μας.) Ας υποθέσουμε τώρα ότι χρησιμοποιούμε «αναδρομή» για να λύσουμε τα δύο υπο προβλήματα μεγέθους Ν/2 που έχουμε φτιάξει. (Αυτή η αναδρομή, βέβαια, θα πρέπει κάποτε να σταματήσει, και πράγματι εάν φτάσουμε να έχουμε τρία σημεία, αυτά θα είναι το κυρτό περίβλημα, αρκεί να τα βάλουμε στην επιθυμητή σειρά ας πούμε αντιωρολογιακά). Αν, λοιπόν, έχουμε τα κυρτά περιβλήματα των δύο υποσυνόλων των σημείων τί λείπει για να φτιάξουμε το συνολικό περίβλημα; Πανεπιστήμιο Κρήτης Τμήμα Επιστήμης Υπολογιστών Γ.Φ. Γεωργακόπουλος ver: 18/3/2014 5

Αριστερά σημεία L Α γ Α? R Α Δεξιά σημεία L K γ Κ? R K x-συντεταγμένες Σχήμα: Διαίρεση δια δύο και επί μέρους λύσεις τί υπολείπεται; Κατ αρχάς, ας ανατρέξουμε και πάλι στην γεωμετρική εποπτεία, για να δούμε ότι αυτό που λείπει είναι δύο «γέφυρες» γα και γκ, μία «άνω» και μία «κάτω», που ορίζονται από δύο ακραία σημεία (LΑ, RΑ, και LΚ, RΚ, αντίστοιχα). Οι ευθείες αυτές αφήνουν, αντιστοίχως, η μεν γα όλα τα σημεία από κάτω της, η δε γκ όλα από πάνω της. Αφού ορίζονται από δύο σημεία εξ όσων έχουμε ήδη, είναι εύκολο να την βρούμε εξαντλητικά, αυτό όμως θα ήθελε πολύ χρόνο Θ(Ν 3 ) στη χειρότερη περίπτωση. Μπορούμε να κάνουμε κάτι καλύτερο; Η ιδέα εδώ είναι να αρχίσουμε με μια βολική γέφυρα γ, και προκειμένου να βρούμε την «άνω» γέφυρα, να την σηκώνουμε σταδιακά προς τα πάνω. Αυτή η πιο «προοδευτική» διαδικασία έχουμε ελπίδες να είναι πιο αποδοτική. Μια εύκολη επιλογή (αν και όχι αναγκαία) είναι η γέφυρα που συνδέει το δεξιότερο σημείο εκ των αριστερών με το αριστερότερο των δεξιών. Για να μιλήσουμε για την διαδικασία ανύψωσης της γέφυρας (και συμμετρικά για την καταβίβαση), θα υποθέσουμε ότι τα επί μέρους κυρτά περιβλήματα δίνονται με αντιωρολογιακή φορά, και ότι κάθε σημείο έχει, με αυτή την Α/Ω, φορά ένα επόμενο και ένα προηγούμενο. Η γέφυρα μας θα ορίζεται κάθε φορά από δύο σημεία L, R, ένα από το αριστερό και ένα το δεξιό περίβλημα αντίστοιχα. Έστω μια τέτοια γέφυρα. Αν σταθούμε στο αριστερό της άκρο θα θέλαμε όλα τα σημεία του δεξιού περιβλήματος να είναι κάτω από αυτή. Επειδή το περίβλημα είναι κυρτό πολύγωνο αρκεί να ελέγξουμε μόνο το προηγούμενο και επόμενο σημείο του R: έαν και το προηγούμενο και το επόμενο είναι κάτω από αυτήν τότε όλα είναι. Εάν λοιπόν, ένα εξ αυτών έστω το R είναι πάνω από την γέφυρα, τότε μπορούμε να περιστρέψουμε την γέφυρα αντιωρολογιακά περί το σημείο L, με το να θέσουμε γ LR. Συμμετρικά, εάν σταθούμε στο αριστερό της άκρο L και ένα εκ των γειτoνικών του, έστω το L είναι πάνω από την γέφυρα τότε μπορούμε να περιστρέψουμε την γέφυρα ωρολογιακά περί το σημείο R, με το να θέσουμε γ L R. Και στις δύο περιπτώσεις θα έχουμε πραγματοιήσει κάποια πρόοδο. Αν και για τα δύο σημεία L, R όλα τα σημεία του δεξιού και αριστερού περιβλήματος είναι κάτω από την γέφυρα, τότε έχουμε τελειώσει έχουμε βρεί την άνω γέφυρα, γα, και μπορούμε να επαναλάβουμε συμμετρικά αυτή την διαδικασία για να βρούμε και την κάτω γέφυρα, γκ. Αλλά γιατί αυτή η διαδικασία θα τελειώσει και μάλιστα γρήγορα; Ας εξετάσουμε την κίνηση των άκρων της γέφυρας έχουν εξ άλλου συμμετρικά χαρακτηριστικά. Αρχικά το μεν αριστερό άκρο έχει επιλεγεί πάνω στην δεξιά όψη του αριστερού περιβλήματος, δηλαδή το τμήμα του από το αριστερό άκρο LΚ της κάτω γέφυρας έως αντιωρολογιακά το αριστερό LΑ της άνω γέφυρας. Συμμετρικά το δεξιό άκρο R της αρχικής γέφυρας βρίσκεται στην αριστερή όψη του δεξιού περιβλήματος. Πανεπιστήμιο Κρήτης Τμήμα Επιστήμης Υπολογιστών Γ.Φ. Γεωργακόπουλος ver: 18/3/2014 6

Αριστερά σημεία L Α γ Α R Α Δεξιά σημεία γ R L Σχήμα: Η «ανύψωση» μιας γέφυρας LR LARA Ας προσέξουμε τώρα, ότι το μόνο γειτονικό σημείο του L που μπορεί να είναι πάνω απότην γέφυρα LR είναι το επόμενο Α/Ω του L και το μόνο γειτονικό του R που μπορεί να είναι πάνω από την γέφυρα είναι το προηγούμενό του Α/Ω. Άρα τα L, και R κινούνται μονότονα πάνω στις αντίστοιχες όψεις: το μεν αριστερό αντιωρολογικά, το δε δεξιό, ωρολογιακά. Η δεύτερη παρατήρηση που χρειαζόμαστε είναι ότι το αριστερό άκρο L δεν μπορεί να ξεπεράσει το αντίστοιχο «κορυφαίο» σημείο LΑ, διότι σε καμμία γέφυρα τύπου LΑR δεν μπορεί το επόμενο Α/Ω του LΑ, έστω L*, να βρεθεί πάνω από αυτή: η γέφυρα LΑRΑ ήδη αφήνει όλα τα αριστερά σημεία από κάτω, άρα και το L*, και όλες οι άλλες γέφυρες LΑR προκύπτουν από αυτήν με ωρολογιακή στροφή περί το αριστερό της άκρο LΑ, (αφού όλα τα δεξιά σημεία είναι επίσης κάτω από αυτήν), επομένως συνεχίζουν να αφήνουν το L* κάτω από αυτές. Άρα το αριστερό άκρο L της εκάστοτε υπό δοκιμήν γέφυρας θα κινηθεί πάνω στην δεξιά όψη του αριστερού περιβλήματος, «μονότονα» και «ανοδικά», και το πολύ έως το σημείο LΑ επομένως δεν θα κάνουμε πάνω Ν/2 κινήσεις. Το ανάλογο και ισχύει φυσικά, και συμμετρικά, για το δεξιό άκρο R. Δίνουμε παρακάτω τον σχετικό ψευδοκώδικα. Καταμετρώντας τα βήματα του αλγορίθμου, λαμβάνουμε για άλλη μια φορά την σχέση Τ(Ν) 2Τ(Ν/2) + Ο(Ν), με λύση Τ(Ν) = Ο(NlogN). Πανεπιστήμιο Κρήτης Τμήμα Επιστήμης Υπολογιστών Γ.Φ. Γεωργακόπουλος ver: 18/3/2014 7

Αλγόριθμος: κυρτό περίβλημα Ταξινομούμε Ν σημεία Ρ[..] ως προς x-συντεταγμένη ΚυρτόΠερίβλημα(Ρ,κ,λ, Π,Ν Π ) Διαδικασία ΑνωΓέφυρα(L,R) { L το δεξιότερο του αριστερού περιβλήματος Π L R το αριστερότερο του δεξιού περιβλήματος Π R Επαναλαμβάνουμε ΟΚ ΑΛΗΘΕΣ Εφόσον (L.επό πάνω-από LR) { L L.επό, ΟΚ ΨΕΥΔΕΣ } Εφόσον (R.πρό πάνω-από LR) { R R.προ, ΟΚ ΨΕΥΔΕΣ } Έως-ότου OK } Διαδικασία ΚάτωΓέφυρα {...} //συμμετρικά { Εάν Ν 3 Τότε Βάζουμε στο τελικό κυρτό περίβλημα Π, τα Ν Π = Ν σημεία με Α/Ω φορά. Αλλιώς // διαίρεση μ (κ+λ) δια 2, // αναδρομή ΚυρτόΠερίβλημα(Ρ,κ,μ, Π L,N L ) ΚυρτόΠερίβλημα(Ρ,μ+1,λ, Π R,N R ) // ένωση ΑνωΓέφυρα(L A,R A ) ΚάτωΓέφυρα(L Κ,R Κ ) κόστος: Ο(ΝlogN) Τ(Ν)... Ο(Ν/2) Ο(Ν/2) Ν/2 φορές Ο(1) Ο(Ν/2) συνολικά Ο(Ν/2) Τ(Ν/2) Τ(Ν/2) Ο(Ν) Ο(Ν) } Διανύουμε το δεξιό και αριστερό κυρτό περίβλημα Π L Π R και βάζουμε στο τελικό κυρτό περίβλημα Π τα σημεία από δεξιά όψη Π R (Α/Ω από R Κ έως R Α ), και τα σημεία από αριστερή όψη του Π L (Α/Ω από L A έως L K ), μετρώντας το πλήθος Ν Π, των σχετικών σημείων. Ο(Ν) βήματα Πανεπιστήμιο Κρήτης Τμήμα Επιστήμης Υπολογιστών Γ.Φ. Γεωργακόπουλος ver: 18/3/2014 8