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

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Αφαιρετικοί Τυποι Δεδομένων
Advertisements

Πιθανοκρατικοί Αλγόριθμοι
Εισαγωγή στους Αλγόριθμους Ταξινόμησης
Ανακτηση Πληροφοριασ σε νεφη Υπολογιστων
Αναδρομη και static Γραψετε την συναρτηση sequence_size που διαβαζει μια απροσδιοριστου μεγεθους σειρας και υπολογιζει και τυπωνει το μεγεθος της. int.
Δομές Αναζήτησης TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A A A εισαγωγή αναζήτησηεπιλογή διατεταγμένος πίνακας.
Αλγόριθμοι Ι Κάθε καλώς ορισμένη υπολογιστική διαδικασία, η οποία καλείται να επιλύσει ένα συγκεκριμένο πρόβλημα εντός πεπερασμένου χρόνου. Αλγόριθμος.
Γιάννης Σταματίου Μη αποδοτική αναδρομή και η δυναμική προσέγγιση Webcast 8.
Σχεδίαση Αλγορίθμων Προτεινόμενα βιβλία:
Εισαγωγικές Έννοιες Διδάσκοντες: Σ. Ζάχος, Δ. Φωτάκης Επιμέλεια διαφανειών: Δ. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο.
Επιλογή Διδάσκοντες: Σ. Ζάχος, Δ. Φωτάκης Επιμέλεια διαφανειών: Δ. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο.
ΗΥ150 – Προγραμματισμός Ξενοφών Ζαμπούλης ΗΥ-150 Προγραμματισμός Ταξινόμηση και Αναζήτηση.
Κοντινότεροι Κοινοί Πρόγονοι α βγ θ δεζ η π ν ι κλμ ρσ τ κκπ(λ,ι)=α, κκπ(τ,σ)=ν, κκπ(λ,π)=η κκπ(π,σ)=γ, κκπ(ξ,ο)=κ ξο κκπ(ι,ξ)=β, κκπ(τ,θ)=θ, κκπ(ο,μ)=α.
Διαίρει-και-Βασίλευε
Δυναμικός Προγραμματισμός
Ισορροπημένα Δένδρα TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A A A Μπορούμε να επιτύχουμε χρόνο εκτέλεσης για.
Δομές Αναζήτησης TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A A A Χειριζόμαστε ένα σύνολο στοιχείων όπου το κάθε.
ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι
Αλγόριθμοι και Πολυπλοκότητα
Σχεδίαση Αλγορίθμων - Τμήμα Πληροφορικής ΑΠΘ - Εξάμηνο 4ο1 Διαίρει και Βασίλευε γνωστότερη Η γνωστότερη μέθοδος σχεδιασμού αλγορίθμων: Διαιρούμε.
Προσεγγιστικοί Αλγόριθμοι για NP-Δύσκολα Προβλήματα
Ουρά Προτεραιότητας: Heap
Δυναμικη Δεσμευση Μνημης Συνδεδεμενες Λιστες (dynamic memory allocation, linked lists) Πως υλοποιουμαι προγραμματα που δεν γνωριζουμε πριν την εκτελεση.
Συντομότερες Διαδρομές
Διδάσκοντες: Σ. Ζάχος, Δ. Φωτάκης
2-1 Ανάλυση Αλγορίθμων Αλγόριθμος Πεπερασμένο σύνολο εντολών που, όταν εκτελεστούν, επιτυγχάνουν κάποιο επιθυμητό αποτέλεσμα –Δεδομένα εισόδου και εξόδου.
ΕΠΛ231 – Δομές Δεδομένων και Αλγόριθμοι
Γιάννης Σταματίου Αναδρομή και αναδρομικές σχέσεις
Μηχανές Turing και Υπολογισιμότητα
Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - Εξάμηνο 4ο
Ταξινόμηση και Αναζήτηση
Αλγόριθμοι Ταξινόμησης
Ειδικά Θέματα Αλγορίθμων και Δομών Δεδομένων
Διδακτική της Πληροφορικής ΗΥ302 Εργασία :Παρουσίαση σχολικού βιβλίου Γ’ Λυκείου Τεχνολογικής Κατεύθυνσης «Ανάπτυξη εφαρμογών σε προγραμματιστικό περιβάλλον»
Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών – Τμήμα Πληροφορικής και Τηλεπικοινωνιών 1 Κεφάλαιο 3 Η Σημασιολογία των Γλωσσών Προγραμματισμού Προπτυχιακό.
Ελάχιστο Συνδετικό Δέντρο
Υπολογιστική Πολυπλοκότητα Διδάσκοντες: Σ. Ζάχος, Δ. Φωτάκης Επιμέλεια διαφανειών: Δ. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό.
Λεξικό, Union – Find Διδάσκοντες: Σ. Ζάχος, Δ. Φωτάκης Επιμέλεια διαφανειών: Δ. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο.
Αναζήτηση Κατά Βάθος Διδάσκοντες: Σ. Ζάχος, Δ. Φωτάκης Επιμέλεια διαφανειών: Δ. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο.
Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών – Τμήμα Πληροφορικής και Τηλεπικοινωνιών 1 Κεφάλαιο 4 Σημασιολογία μιας Απλής Προστακτικής Γλώσσας Προπτυχιακό.
ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι 8-1 Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: 2-3 Δένδρα, Υλοποίηση και πράξεις Β-δένδρα B-Δένδρα.
ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης ΗΥ-150 Προγραμματισμός Αναδρομή (1/2)
Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - 4ο εξάμηνο1 Ανάλυση Αλγορίθμων b Θέματα: Ορθότητα Χρονική αποδοτικότητα Χωρική αποδοτικότητα Βελτιστότητα b Προσεγγίσεις:
ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι
Ασυμπτωτικός Συμβολισμός
ΔιαΙρεςη και κυριαρχια
ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
Δομές Δεδομένων 1 Θέματα Απόδοσης. Δομές Δεδομένων 2 Οργανώνοντας τα Δεδομένα  Η επιλογή της δομής δεδομένων και του αλγορίθμου επηρεάζουν το χρόνο εκτέλεσης.
ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
Χρονική Πολυπλοκότητα
ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης ΗΥ-150 Προγραμματισμός Τύποι Μεταβλητών Τελεστές Βασική Είσοδος/Έξοδος.
8-1 ΜΑΘΗΜΑ 8 ο Εισαγωγή στους Αλγόριθμους Ταξινόμησης.
Συνδετικότητα γραφήματος (graph connectivity). α β Υπάρχει μονοπάτι μεταξύ α και β; Παραδείγματα: υπολογιστές ενός δικτύου ιστοσελίδες ισοδύναμες μεταβλητές.
Αναζήτηση σε πίνακα Αναζήτηση σε πίνακα που περιέχει ακέραιους αριθμούς.
ΔΥΑΔΙΚΗ ΑΝΑΖΗΤΗΣΗ & ΤΑΞΙΝΟΜΗΣΗ ΜΕ ΣΥΓΧΩΝΕΥΣΗ. Δυαδική αναζήτηση (Binary search) ΔΕΔΟΜΕΝΟ: ένα μεγάλο αρχείο που περιέχει τιμές z [0,1,…,n-1] ταξινομημένες.
Δυναμικός Κατακερματισμός
9η Διάλεξη Ταξινόμηση Ε. Μαρκάκης
Διδάσκων: Δρ. Τσίντζα Παναγιώτα
Αλγόριθμοι για ανάθεση συχνοτήτων και έλεγχο αποδοχής κλήσεων σε κυψελικά ασύρματα δίκτυα (μέρος ΙIΙ)
ENOTHTA 2. ΘΕΜΑΤΑ ΘΕΩΡΗΤΙΚΗΣ ΕΠΙΣΤΗΜΗΣ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΚΕΦΑΛΑΙΟ 2
Ισορροπημένα Δένδρα Μπορούμε να επιτύχουμε χρόνο εκτέλεσης
Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον ΑΕΠΠ
Ουρά Προτεραιότητας (priority queue)
Δομές Αναζήτησης Χειριζόμαστε ένα σύνολο στοιχείων όπου το κάθε στοιχείο έχει ένα κλειδί από ολικά διατεταγμένο σύνολο Θέλουμε να υποστηρίξουμε δύο.
ΑΣΥΜΠΤΩΤΙΚΗ ΑΝΑΛΥΣΗ & ΠΡΟΣΘΕΣΗ
14η Διάλεξη Δέντρα Δυαδικής Αναζήτησης Ε. Μαρκάκης
Αναδρομή Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα:
Στοιχεία Χωρικής Πολυπλοκότητας
Μεταγράφημα παρουσίασης:

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

Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2011)Quicksort 2 Quicksort [Hoare, 62]  Στοιχείο διαχωρισμού (pivot), π.χ. πρώτο, τυχαίο, …  Αναδιάταξη και διαίρεση εισόδου σε δύο υπο-ακολουθίες: Στοιχεία αριστερής υπο-ακολ.  στοιχείο διαχωρισμού. Στοιχεία δεξιάς υπο-ακολ.  στοιχείο διαχωρισμού.  Ταξινόμηση υπο-ακολουθιών αναδρομικά.  Ακολουθία ταξινομημένη – όχι σύνθεση! quickSort(int A[], int left, int right) { if (left >= right) return; // At most 1 element q = partition(A, left, right); quickSort(A, left, q); quickSort(A, q+1, right); }

Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2011)Quicksort 3 Διαίρεση  Στοιχείο διαχωρισμού (pivot), π.χ. πρώτο, τυχαίο, …  Διαίρεση σε ένα πέρασμα : Σάρωση από αριστερά (με δείκτη i) μέχρι Α[ i ]  pivot. Σάρωση από δεξιά (με δείκτη j) μέχρι Α[ j]  pivot. Αν δεν έχουν εξεταστεί όλα τα στοιχεία (i < j): αντιμετάθεση(Α[ i ], Α[ j ]) και συνέχεια. Αν έχουν εξεταστεί όλα: επιστροφή ορίου διαχωρισμού (δείκτη j).

Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2011)Quicksort 4 Διαίρεση partition(int A[], int left, int right) { int pivot = A[left]; i = left – 1; j = right + 1; while (1) { while (A[++i] pivot) ; if (i < j) swap(A[i], A[j]); else return(j); } } Στοιχείο διαχωρισμού : 13

Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2011)Quicksort 5 Διαίρεση partition(int A[], int left, int right) { int pivot = A[left]; i = left – 1; j = right + 1; while (1) { while (A[++i] pivot) ; if (i < j) swap(A[i], A[j]); else return(j); } } Στοιχείο διαχωρισμού : 10

Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2011)Quicksort 6 Ανάλυση Διαχωρισμού  Ορθότητα partition : Διατηρεί και επεκτείνει αριστερή περιοχή με στοιχεία  pivot και δεξιά περιοχή με στοιχεία  pivot. A[ i ]  pivot : επέκταση αριστερής περιοχής σταματά. A[ j ]  pivot : επέκταση δεξιάς περιοχής σταματά. Ξένες περιοχές : αντιμετάθεση στοιχείων και συνέχεια. Επικάλυψη : ολοκλήρωση διαίρεσης. Τελικά τα στοιχεία αριστερά  pivot και τα στοιχεία δεξιά  pivot, όπως απαιτείται.  Κάθε περιοχή  1 στοιχείο. Quicksort τερματίζει. (1  σημείο διαχωρισμού  n – 1) Απαραίτητα: i και j σταματούν στο pivot.

Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2011)Quicksort 7 Ανάλυση Διαχωρισμού  Χρόνος εκτέλεσης partition : Κάθε στοιχείο συγκρίνεται με pivot μία φορά (εκτός από στοιχεία εκατέρωθεν σημείου χωρισμού). Τελικά i και j «δείχνουν» είτε γειτονικές είτε ίδια θέση γιατί όπου πέρασε το i δεν συνεχίζει j. Χρόνος εκτέλεσης partition για n στοιχεία = Θ(n).  Μετά τον διαχωρισμό, στοιχεία δεν αλλάζουν «πλευρά» (δηλ. αριστερά μένουν αριστερά, δεξιά μένουν δεξιά).  Υπάρχουν πολλές άλλες μορφές διαίρεσης, π.χ. pivot παίρνει τελική του θέση στον πίνακα, διαίρεση στα τρία, …

Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2011)Quicksort 8 Παράδειγμα Quicksort

Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2011)Quicksort 9 Ορθότητα Quicksort  Συνέπεια ορθότητας partition : Τερματισμός : μέγεθος υπο-ακολουθιών  n – 1. Ταξινόμηση :  Αριστερά στοιχεία  pivot  δεξιά στοιχεία.  Επαγωγικά, αριστερή περιοχή και δεξιά περιοχή ταξινομημένες.  Συνολικά, πίνακας ταξινομημένος.

Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2011)Quicksort 10 Χρόνος Εκτέλεσης (χ.π.)  Χρόνος εκτελ. αναδρομικών αλγ. με διατύπωση και λύση αναδρομικής εξίσωσης.  Χρόνος εκτέλεσης partition(n στοιχεία) : Θ(n)  Τ(n) : χρόνος (χ.π.) για ταξινόμηση n στοιχείων. Θ(n) : αναδιάταξη και διαίρεση εισόδου. T(k) : ταξινόμηση αριστερού τμήματος (k στοιχεία). T(n – k) : ταξινόμηση δεξιού τμήματος (n – k στοιχεία).

Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2011)Quicksort 11 Χρόνος Εκτέλεσης (χ.π.)  Χειρότερη περίπτωση : k = 1 ή k = n – 1 (σε κάθε κλήση). Ουσιαστικά δεν γίνεται διαίρεση (μόνο αναδιάταξη) ! Partition «βοηθάει ελάχιστα» τον αλγόριθμο.  Στιγμιότυπα που quicksort χρειάζεται χρόνο Ω(n 2 );

Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2011)Quicksort 12 Χρόνος Εκτέλεσης  Καλύτερη περίπτωση : k = n / 2 (σε κάθε κλήση). Ουσιαστικά τέλεια διαίρεση ! Partition «βοηθάει τα μέγιστα» !  Aν (περίπου ίδιο μεγέθος)  Χειρότερη και καλύτερη περίπτωση εξαιρετικά σπάνιες !  Αν τυχαίο στοιχείο pivot, πιθανότητα διαίρεσης (n / 4, 3n / 4) ή καλύτερης  1/2 !

Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2011)Quicksort 13 Πιθανοτική Quicksort  Τυχαίο στοιχείο σαν στοιχείο χωρισμού (pivot).  Για κάθε, πιθανότητα διαίρεσης (k, n – k) = randomQuickSort(int A[], int left, int right) { if (left >= right) return; // At most 1 element pivot = random(left, right); swap(A[left], A[pivot]); q = partition(A, left, right); randomQuickSort(A, left, q); randomQuickSort(A, q+1, right); }

Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2011)Quicksort 14 Χρόνος Εκτέλεσης (μ.π.)  Λύση αναδρομής : Αυτός ο χρόνος εκτέλεσης με μεγάλη πιθανότητα !  Πιθανότητα διαίρεσης (n / 4, 3n / 4) ή καλύτερης  1/2 ! Κατά «μέσο όρο», κάθε 2 επίπεδα στο δέντρο της αναδρομής, έχουμε «επιτυχημένη» διαίρεση. Σε κάθε επίπεδο, συνολικός χρόνος διαίρεσης Θ(n). Θ(n log n) από «επιτυχημένες» διαιρέσεις + Θ(n log n) από «αποτυχημένες» διαιρέσεις.

Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2011)Quicksort 15 Χρόνος Εκτέλεσης (μ.π.)  Πιθανότητα «αποτυχημένες» διαιρέσεις > c log n είναι εξαιρετικά μικρή ! Χρόνος εκτέλεσης Θ(n log n) με μεγάλη πιθανότητα !  Μέση περίπτωση δεν εξαρτάται από είσοδο ! Αφορά στη συμπεριφορά του αλγόριθμου.  Εξαιρετικά μικρή πιθανότητα χειρότερης περίπτωσης. Ανάλυση χειρότερης περίπτωσης δεν έχει νόημα !

Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2011)Quicksort 16 Πιθανοτικοί Αλγόριθμοι  Ντετερμινιστικοί αλγόριθμοι: Προκαθορισμένη συμπεριφορά για κάθε είσοδο. Υπάρχει χειρότερη περίπτωση και μπορεί να συμβεί.  Πιθανοτικοί αλγόριθμοι: Συμπεριφορά από είσοδο και τυχαίες επιλογές. Χρήση τυχαιότητας ώστε χειρότερη περίπτωση να συμβαίνει με πολύ μικρή πιθανότητα. Ποια είναι η χειρότερη περ. για πιθανοτική quicksort; Χρόνος (απόδοση) κατά μέση τιμή. Ορθότητα με μεγάλη πιθανότητα. Las-Vegas: αποτέλεσμα σωστό, χρόνος τυχαία μετ/τη. Monte-Carlo: χρόνος προκαθορισμένος, μπορεί λάθος αποτέλεσμα (αλλά με πολύ μικρή πιθανότητα).

Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2011)Quicksort 17 Σύνοψη  Quicksort: Πιθανοτικός αλγόριθμος. Χρόνος χειρότερης περ.: Θ( n 2 ) Χρόνος μέσης περίπτωσης: Θ(n log n) Χώρος: σχεδόν in-place. Αναδρομή καθυστερεί και απαιτεί μνήμη. Εύκολη και γρήγορη υλοποίηση. Γρηγορότερος αλγόριθμος στην πράξη (για n  30).

Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2011)Quicksort 18 Σύνοψη ΑλγόριθμοςΚαλύτερηΜέσηΧειρότερηΧώρος BubbleSΩ(n)Ω(n)O(n 2 ) O(1) InsertionSΩ(n)O(n 2 ) O(1) SelectionSΩ(n)Ω(n)O(n 2 ) O(1) HeapSΩ(n log n)Ο(n log n)O(n log n)O(1) MergeSΩ(n log n)Ο(n log n)O(n log n)O(n) QuickSΩ(n log n)Ο(n log n)O(n 2 )?