ΔΥΑΔΙΚΗ ΑΝΑΖΗΤΗΣΗ & ΤΑΞΙΝΟΜΗΣΗ ΜΕ ΣΥΓΧΩΝΕΥΣΗ. Δυαδική αναζήτηση (Binary search) ΔΕΔΟΜΕΝΟ: ένα μεγάλο αρχείο που περιέχει τιμές z [0,1,…,n-1] ταξινομημένες.

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Διανομή έκτασης με ευθεία διερχόμενη από σταθερό σημείο
Advertisements

Δένδρα van Emde Boas TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A A A Μελετάμε την περίπτωση όπου αποθηκεύουμε.
Eπιμέλεια Τίκβα Χριστίνα
ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ ΤΜΗΜΑΤΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ
Αλγόριθμοι «διαίρει και βασίλευε»
ΣΤΟΙΧΕΙΑ ΨΕΥΔΟΚΩΔΙΚΑ ΒΑΣΙΚΕΣ ΔΟΜΕΣ ΒΑΣΙΚΟΙ ΑΛΓΟΡΙΘΜΟΙ ΠΙΝΑΚΩΝ
ΓΡΗΓΟΡΟΣ ΜΕΤΑΣΧΗΜΑΤΙΣΜΟΣ FOURIER
Εισαγωγή στην επιστήμη των υπολογιστών
ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ
Γιάννης Σταματίου Μη αποδοτική αναδρομή και η δυναμική προσέγγιση Webcast 8.
Σχεδίαση Αλγορίθμων Προτεινόμενα βιβλία:
Ο Αλγόριθμος FP-Growth. Αλγόριθμος FP-Growth Ο αλγόριθμος χρησιμοποιεί μια συμπιεσμένη αναπαράσταση της βάσης των συναλλαγών με τη μορφή ενός FP-δέντρου.
Αλγόριθμοι και Πολυπλοκότητα
Εισαγωγικές Έννοιες Διδάσκοντες: Σ. Ζάχος, Δ. Φωτάκης Επιμέλεια διαφανειών: Δ. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο.
Επιλογή Διδάσκοντες: Σ. Ζάχος, Δ. Φωτάκης Επιμέλεια διαφανειών: Δ. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο.
ΗΥ150 – Προγραμματισμός Ξενοφών Ζαμπούλης ΗΥ-150 Προγραμματισμός Ταξινόμηση και Αναζήτηση.
Εργασία Η υλοποίηση του αλγορίθμου συγχώνευσης θα πρέπει να χρησιμοποιεί την ιδέα των ροών (streams). Θα πρέπει να υπάρχουν δύο διαφορετικά είδη.
Διαίρει και Βασίλευε πρόβλημα μεγέθους Ν διάσπαση πρόβλημα μεγέθους Ν-k πρόβλημα μεγέθους k.
Κοντινότεροι Κοινοί Πρόγονοι α βγ θ δεζ η π ν ι κλμ ρσ τ κκπ(λ,ι)=α, κκπ(τ,σ)=ν, κκπ(λ,π)=η κκπ(π,σ)=γ, κκπ(ξ,ο)=κ ξο κκπ(ι,ξ)=β, κκπ(τ,θ)=θ, κκπ(ο,μ)=α.
Διαίρει-και-Βασίλευε
Δυναμικός Προγραμματισμός
Προσεγγιστικοί Αλγόριθμοι
Δυναμική Διατήρηση Γραμμικής Διάταξης Διατηρεί μια γραμμική διάταξη δυναμικά μεταβαλλόμενης συλλογής στοιχείων. Υποστηρίζει τις λειτουργίες: Έλεγχος της.
Τυχαιοκρατικοί Αλγόριθμοι TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA Πιθανότητες και Αλγόριθμοι Ανάλυση μέσης.
ΣΥΝΑΡΤΗΣΕΙΣ.
ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Κυριακή, 11 Ιανουαρίου 2015Κυριακή, 11 Ιανουαρίου 2015Κυριακή, 11 Ιανουαρίου 2015Κυριακή, 11 Ιανουαρίου.
Σχεδίαση Αλγορίθμων - Τμήμα Πληροφορικής ΑΠΘ - Εξάμηνο 4ο1 Διαίρει και Βασίλευε γνωστότερη Η γνωστότερη μέθοδος σχεδιασμού αλγορίθμων: Διαιρούμε.
ΘΕΜΑΤΙΚΗ ΕΝΟΤΗΤΑ 2: ΘΕΜΑΤΑ ΘΕΩΡΗΤΙΚΗΣ ΕΠΙΣΤΗΜΗΣ Η/Υ
Δομές Δεδομένων.
Διδάσκοντες: Σ. Ζάχος, Δ. Φωτάκης
Γιάννης Σταματίου Αναδρομή και αναδρομικές σχέσεις
Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - Εξάμηνο 4ο
Ταξινόμηση και Αναζήτηση
Διαφάνειες παρουσίασης Πίνακες (συνέχεια) Αριθμητικοί υπολογισμοί Αναδρομή.
ΘΕΜΑΤΙΚΗ ΕΝΟΤΗΤΑ 2: ΘΕΜΑΤΑ ΘΕΩΡΗΤΙΚΗΣ ΕΠΙΣΤΗΜΗΣ Η/Υ
Λεξικό, Union – Find Διδάσκοντες: Σ. Ζάχος, Δ. Φωτάκης Επιμέλεια διαφανειών: Δ. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο.
Quicksort Διδάσκοντες: Σ. Ζάχος, Δ. Φωτάκης Επιμέλεια διαφανειών: Δ. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο.
Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Εισαγωγή στην Επεξεργασία Ερωτήσεων.
Κεφάλαιο 10 – Υποπρογράμματα
ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι
ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ §3.7 ΤΑΞΙΝΟΜΗΣΗ
Ασυμπτωτικός Συμβολισμός
ΔιαΙρεςη και κυριαρχια
 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον:  Τεχνικές Διδασκαλίας.
ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
Δομές Δεδομένων 1 Θέματα Απόδοσης. Δομές Δεδομένων 2 Οργανώνοντας τα Δεδομένα  Η επιλογή της δομής δεδομένων και του αλγορίθμου επηρεάζουν το χρόνο εκτέλεσης.
ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης ΗΥ-150 Προγραμματισμός Συναρτήσεις.
Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Ευρετήρια.
Ένα δείγμα προβλημάτων στα Αριθμητικά του Διόφαντου
Ενότητα 2.1 Αλγόριθμοι Ταξινόμησης O(n 2 ) & O(nlogn) Σχεδίαση & Ανάλυση Αλγορίθμων.
8-1 ΜΑΘΗΜΑ 8 ο Εισαγωγή στους Αλγόριθμους Ταξινόμησης.
Συνδετικότητα γραφήματος (graph connectivity). α β Υπάρχει μονοπάτι μεταξύ α και β; Παραδείγματα: υπολογιστές ενός δικτύου ιστοσελίδες ισοδύναμες μεταβλητές.
Για μτ από ατ μέχρι ττ [με_βήμα β] εντολές Τέλος_επανάληψης : περιοχή εντολών μτ : η μεταβλητή της οποίας η τιμή θα περάσει από την αρχική.
Αναζήτηση σε πίνακα Αναζήτηση σε πίνακα που περιέχει ακέραιους αριθμούς.
 Στόχος της παρουσίασης αυτής είναι η εξοικείωση με τον Ηλεκτρονικό Κατάλογο της Βιβλιοθήκης προκειμένου να αναζητήσουμε ένα τεκμήριο από τη συλλογή.
Δυναμικός Κατακερματισμός
ΑΛΓΟΡΙΘΜΟΣ ΠΡΟΒΛΗΜΑ ΑΛΓΟΡΙΘΜΟΣ ΛΥΣΗ
Διδάσκων: Δρ. Τσίντζα Παναγιώτα
Βάσεις Δεδομένων ΙΙ 7η διάλεξη
Αρχεσ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Η/Υ ΤΑξη Β΄
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
Η ΕΝΝΟΙΑ ΤΟΥ ΠΡΟΒΛΗΜΑΤΟΣ
Προβλήματα Ικανοποίησης Περιορισμών (Επιπλέον Διαφάνειες) Μανόλης Κουμπαράκης Τεχνητή Νοημοσύνη.
ΠΟΛΛΑΠΛΑΣΙΑΣΜΟΣ (συνέχεια)
Σειριακή ή Γραμμική Αναζήτηση 1.Μοναδικό Κλειδί (key)
ENOTHTA 2. ΘΕΜΑΤΑ ΘΕΩΡΗΤΙΚΗΣ ΕΠΙΣΤΗΜΗΣ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΚΕΦΑΛΑΙΟ 2
Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον ΑΕΠΠ
Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον ΑΕΠΠ
Δυναμικός Κατακερματισμός
Μεταγράφημα παρουσίασης:

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

Δυαδική αναζήτηση (Binary search) ΔΕΔΟΜΕΝΟ: ένα μεγάλο αρχείο που περιέχει τιμές z [0,1,…,n-1] ταξινομημένες ΖΗΤΟΥΜΕΝΟ: να βρούμε δοσμένη τιμή k στο αρχείο αυτό ΙΔΕΑ: Συγκρίνουμε την τιμή k με z[n/2] και ανάλογα με το αποτέλεσμα αναζητούμε το k αναδρομικά είτε στο πρώτο μισό του αρχείου z[0,…,n/2-1], είτε στο δεύτερο μισό του αρχείου z[n/2,…,n-1] Η αναδρομή περιγράφεται από τη σχέση (a=1,b=2,d=0) Επομένως, ο χρόνος εκτέλεσης του αλγορίθμου είναι O(log n)

Δυαδική αναζήτηση (Binary search) σε τηλεφωνικό κατάλογο ΔΕΔΟΜΕΝΟ: –Τηλεφωνικός κατάλογος με n ονόματα και έναν αριθμό τηλεφώνου για κάθε όνομα –Ο τηλεφωνικός κατάλογος είναι ταξινομημένος κατά αύξουσα αλφαβητική σειρά ως προς τα ονόματα –Ένα όνομα από τον κατάλογο ΖΗΤΟΥΜΕΝΟ: Να βρεθεί το τηλέφωνο που αντιστοιχεί στο δοσμένο όνομα

Δυαδική αναζήτηση (Binary search) σε τηλεφωνικό κατάλογο Το πρόβλημα λύνεται με την τεχνική «διαίρει και βασίλευε» με βάση την παρατήρηση ότι δεδομένου ενός ονόματος υπάρχουν 3 περιπτώσεις: –Το όνομα βρίσκεται στη μεσαία θέση του καταλόγου –Το όνομα βρίσκεται σε κάποια θέση στο πρώτο μισό του καταλόγου –Το όνομα βρίσκεται σε κάποια θέση στο δεύτερο μισό του καταλόγου Ο αλγόριθμος αρχικά εξετάζει αν το δοσμένο όνομα είναι στη μέση του τηλεφωνικού καταλόγου –Αν είναι, επιστρέφει το τηλέφωνο –Διαφορετικά, λόγω της αλφαβητικής ταξινόμησης του καταλόγου, το όνομα θα βρίσκεται είτε στο πρώτο είτε στο δεύτερο μισό του καταλόγου: οπότε το αναζητά εκεί –Συνεχίζει με τον ίδιο τρόπο μέχρι να το προσδιορίσει

Δυαδική αναζήτηση (Binary search) σε τηλεφωνικό κατάλογο Ο αλγόριθμος με τη μορφή ψευδοκώδικα:

Δυαδική αναζήτηση (Binary search) σε τηλεφωνικό κατάλογο: παράδειγμα Ο τηλεφωνικός κατάλογος: Γιώτα: Ελένη: Κωνσταντίνα: Πέτρος: Στέλλα: ΓιώταΕλένηΚωνσταντίναΠέτροςΣτέλλα Αναζητούμε το τηλέφωνο της Ελένης… Προσπάθεια 1 ΓιώταΕλένηΚωνσταντίναΠέτροςΣτέλλα Προσπάθεια 2 ΓιώταΕλένηΚωνσταντίναΠέτροςΣτέλλα Προσπάθεια 3

Δυαδική αναζήτηση (Binary search) σε τηλεφωνικό κατάλογο: παράδειγμα Χρόνος εκτέλεσης; Για να τον βρούμε ρωτάμε: πόσες φορές μπορεί να χρειαστεί να διαιρέσω τον κατάλογο σε δύο μισά προκειμένου να βρω το τηλέφωνο που αντιστοιχεί στο δοσμένο όνομα; –Στη χειρότερη περίπτωση μπορεί το δοσμένο όνομα να είναι (πρώτο ή) τελευταίο στον κατάλογο  πρέπει να διαιρέσω τον κατάλογο στα 2 τόσες φορές ώστε να μείνει ένα μόνο στοιχείο… –Αν ο κατάλογος έχει n καταχωρήσεις, το ζητούμενο πλήθος διαιρέσεων είναι n/2 k =1  n=2 k  k=log 2 n  χρόνος εκτέλεσης αλγορίθμου δυαδικής αναζήτησης: logn=Ο(log n) – πολύ γρήγορος…

Ταξινόμηση ΔΕΔΟΜΕΝΟ: λίστα με n στοιχεία ZHTOYMENO: αναδιάταξε τα στοιχεία ώστε να εμφανιστούν σε αύξουσα σειρά Παράδειγμα: –Δοσμένη λίστα: –Ζητούμενη λίστα:

Ταξινόμηση Ενδεικτικές εφαρμογές: Προφανείς εφαρμογές –Ταξινόμηση λίστας ονομάτων –Οργάνωση MP3 σε μία βιβλιοθήκη –Εμφάνιση των αποτελεσμάτων του PageRank της Google –Εμφάνιση σχολίων σε ένα blog με αντίστροφη χρονολογική σειρά Προβλήματα που γίνονται ευκολότερα αν τα δεδομένα τους είναι ταξινομημένα –Εύρεση μεσαίου στοιχείου λίστας –Εύρεση πλησιέστερου ζεύγους –Δυαδική αναζήτηση σε βάση δεδομένων –Εύρεση διπλο-εγγραφών σε λίστα (π.χ., mailing list) Πιο πολύπλοκες εφαρμογές –Συμπίεση δεδομένων –Γραφικά –Υπολογιστική βιολογία –Διαχείριση αλυσίδας προμηθειών –Προτάσεις βιβλίων σε ηλεκτρονικό κατάστημα –Εξισορρόπηση φορτίου σε παράλληλο υπολογιστή

Mergesort: ταξινόμηση με συγχώνευση Ιδέα: χωρίζουμε τη λίστα που πρέπει να ταξινομήσουμε σε 2 μισά, αναδρομικά ταξινομούμε κάθε μισό, και μετά συγχωνεύουμε τις δύο ταξινομημένες υπολίστες Ο αλγόριθμος (επινοήθηκε από τον John von Neumann το 1945):

Mergesort: ταξινόμηση με συγχώνευση Διαίρει: Το πρόβλημα μεγέθους N (με N αριθμούς) διαιρείται σε 2 υποπροβλήματα μεγέθους N/2 το καθένα Βασίλευε: Ταξινόμησε κάθε υποπρόβλημα εφαρμόζοντας αναδρομικά πάλι MergeSort Συνδύασε: Συγχώνευσε τους ταξινομημένους υποπίνακες σε έναν ενιαίο ταξινομημένο πίνακα Διαίρει Βασίλευε-Ταξινόμησε Συνδύασε-Συγχώνευσε

Mergesort: ταξινόμηση με συγχώνευση Διαίρεση Συγχώνευση

Mergesort: ταξινόμηση με συγχώνευση

Χρόνος εκτέλεσης; –Πρέπει να βρούμε την αντίστοιχη αναδρομική σχέση…: στο MergeSort σταματάμε την αναδρομή όταν έχουμε 2 στοιχεία: οπότε τα συγκρίνουμε και τα επιστρέφουμε στη σωστή σειρά –Συγχώνευση είναι η διαδικασία συνδυασμού δύο ταξινομημένων αρχείων σε ένα ταξινομημένο αρχείο Για εισόδους μεγέθους n γίνεται σε χρόνο O(n)

Mergesort: ταξινόμηση με συγχώνευση Έστω T(n) ο χρόνος εκτέλεσης της χειρότερης περίπτωσης για στιγμιότυπα μεγέθους n Ο αλγόριθμος δαπανά χρόνο το πολύ: –O(n) για να διαιρέσει την είσοδο σε δύο τμήματα μεγέθους n/2 το καθένα –T(n/2) για να επιλύσει το κάθε τμήμα –O(n) για να συνδυάσει (συγχωνεύσει) τις λύσεις από τις δύο αναδρομικές κλήσεις Άρα ο χρόνος εκτέλεσης T(n) του Mergesort ικανοποιεί την ακόλουθη αναδρομική σχέση (recurrence relation): –Για σταθερά c, T(n) ≤ 2T(n/2) + cn όταν n > 2 και T(n) ≤ cn

Mergesort: ταξινόμηση με συγχώνευση n/2 k =2  n=2 k+1  log n=k+1

Mergesort: ταξινόμηση με συγχώνευση 1 ο επίπεδο: 1 (=2 0 ) υποπρόβλημα μεγέθους n  χρειάζεται χρόνο cn + χρόνος αναδρομικών κλήσεων 2 ο επίπεδο: 2 (=2 1 ) προβλήματα μεγέθους n/2 το καθένα και καθένα από αυτά χρειάζεται χρόνο το πολύ cn/2  συνολικός χρόνος: cn + χρόνος αναδρομικών κλήσεων 3 ο επίπεδο: 4 (=2 2 ) προβλήματα μεγέθους n/4 το καθένα και καθένα από αυτά χρειάζεται χρόνο το πολύ cn/4  συνολικός χρόνος: cn + χρόνος αναδρομικών κλήσεων

Mergesort: ταξινόμηση με συγχώνευση Επίπεδο j: ο αριθμός των υποπροβλημάτων έχει διπλασιαστεί j φορές  υπάρχουν 2 j υποπροβλήματα Καθένα από αυτά έχει υποδιπλασιαστεί (δηλ., έχει κοπεί στο μισό) j φορές  κάθε υποπρόβλημα έχει μέγεθος n/2 j  χρειάζεται χρόνο το πολύ cn/2 j Όλα τα υποπροβλήματα του επιπέδου j χρειάζονται χρόνο συνολικά το πολύ 2 j (cn/2 j ) = cn

Mergesort: ταξινόμηση με συγχώνευση Ο αριθμός των υποδιπλασιασμών της εισόδου έτσι ώστε να μειωθεί το μέγεθος της από n σε 2 είναι log 2 n-1 αφού ισχύει n/2 k = 2  n = 2k+1  log 2 n = k+1 Χρόνος το πολύ cn για log n επίπεδα δίνει συνολικό χρόνο εκτέλεσης O(n log n)