δυαδική αναζήτηση Παύλος Σ. Εφραιμίδης

Σχετικά έγγραφα
Διαδικασιακός Προγραμματισμός

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

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

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

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

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

Σύνοψη Προηγούμενου. Πίνακες (Arrays) Πίνακες (Arrays): Βασικές Λειτουργίες. Πίνακες (Arrays) Ορέστης Τελέλης

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

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

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

Ταξινόμηση: Εισαγωγικά. Ταξινόμηση (Sor ng) Αλγόριθμοι Απλής Ταξινόμησης. Βασικά Βήματα των Αλγορίθμων

Διάλεξη 18: Πρόβλημα Βυζαντινών Στρατηγών. ΕΠΛ 432: Κατανεμημένοι Αλγόριθμοι

Προγραµµατιστικές Τεχνικές

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

ΘΕΜΑ Α ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ

1. Η χειρότερη περίπτωση είναι όταν γίνου 10 επαναλήψεις, δηλαδή για n = 0.

Προγραμματιστικές Τεχνικές

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

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

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

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

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 8 Ο. Ταξινόμηση και Αναζήτηση Συναρτήσεις χειρισμού οθόνης ΣΙΝΑΤΚΑΣ Ι. ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

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

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

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

Πανεπιστήμιο Ιωαννίνων Τμήμα Πληροφορικής Δομές Δεδομένων [ΠΛΥ302] Χειμερινό Εξάμηνο 2012

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

Περιεχόμενα. 2 Αριθμητικά συστήματα

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

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ ΕΠΛ 035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. και Μηχ. Υπολ.

Πανεπιστήμιο Ιωαννίνων Τμήμα Μηχανικών Η/Υ και Πληροφορικής Δομές Δεδομένων [ΠΛΥ302] Χειμερινό Εξάμηνο 2013

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

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

Επαναληπτικές Διαδικασίες

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

Δομημένος Προγραμματισμός ΙΙΙ - Java

Διάλεξη 04: Παραδείγματα Ανάλυσης

Διάλεξη 04: Παραδείγματα Ανάλυσης Πολυπλοκότητας/Ανάλυση Αναδρομικών Αλγόριθμων

Κατανεμημένα Συστήματα Ι

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

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

ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 4. Παραδείγματα Ανάλυσης Πολυπλοκότητας Ανάλυση Αναδρομικών Αλγόριθμων

Μη γράφετε στο πίσω μέρος της σελίδας

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

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

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

2η Σειρά Γραπτών Ασκήσεων

Δομές Δεδομένων. Ενότητα 1 - Εισαγωγή. Χρήστος Γκουμόπουλος. Πανεπιστήμιο Αιγαίου Τμήμα Μηχανικών Πληροφοριακών και Επικοινωνιακών Συστημάτων

5.1. Προσδοκώμενα αποτελέσματα

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

ΑΕΠΠ 6o Επαναληπτικό Διαγώνισμα

Εισαγωγή στον δομημένο προγραμματισμό

Προγραμματιστικές Τεχνικές

1. Πότε χρησιμοποιούμε την δομή επανάληψης; Ποιες είναι οι διάφορες εντολές (μορφές) της;

ΕΡΓΑΣΤΗΡΙΑΚΕΣ ΑΣΚΗΣΕΙΣ C ΣΕΙΡΑ 1 η

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

Μέθοδοι πολυδιάστατης ελαχιστοποίησης

Ενότητα: Δυαδική Αναζήτηση Σχέδιο Δραστηριότητας: Παιχνίδι: Βρες τον αριθμό

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

Περιεχόμενα. Εισαγωγή του επιμελητή, Γιάννης Σταματίου 15 Πρόλογος 17 Εισαγωγή 23. Μέρος I. ΕΠΑΝΑΛΗΠΤΙΚΟΙ ΑΛΓΟΡΙΘΜΟΙ ΚΑΙ ΑΝΑΛΛΟΙΩΤΕΣ ΣΥΝΘΗΚΕΣ

ΕΝΟΤΗΤΑ 6 ΛΙΣΤΕΣ ΠΑΡΑΛΕΙΨΗΣ (SKIP LISTS)

Δομές Δεδομένων (Data Structures)

Στοιχεία Αλγορίθµων και Πολυπλοκότητας

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

Βραχυπρόθεσμη τοπική μετεωρολογική πρόγνωση με αναζήτηση ανάλογων καταστάσεων

ΠΡΟΣ: Τηλέφωνο: Ινστιτούτο Εκπαιδευτικής Πολιτικής ΚΟΙΝ.:

ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗ ΕΠΙΧΕΙΡΗΣΕΩΝ ΕΠΙΠΕΔΟ ΣΠΟΥΔΩΝ Προπτυχιακό ΚΩΔΙΚΟΣ ΜΑΘΗΜΑΤΟΣ GD2670

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύ

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Αρχές Ανάλυσης Αλγορίθµων Κεφάλαιο 2. Ε. Μαρκάκης Επικ. Καθηγητής

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

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

ΕΡΓΑΣΤΗΡΙΑΚΕΣ ΑΣΚΗΣΕΙΣ C ΣΕΙΡΑ 1 η

Θεωρία Παιγνίων και Αποφάσεων. Ενότητα 3: Παίγνια με περισσότερους παίκτες και μέθοδοι απλοποίησης παιγνίων. Ε. Μαρκάκης. Επικ.

Ενδεικτικές Λύσεις 1ου Σετ Ασκήσεων

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

Αλγόριθμοι Αναζήτησης. (AeppAcademy.com)

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

Αν ένα πρόβλημα λύνεται από δύο ή περισσότερους αλγόριθμους, ποιος θα είναι ο καλύτερος; Με ποια κριτήρια θα τους συγκρίνουμε;

3η Σειρά Γραπτών Ασκήσεων

Κεφάλαιο 5. Ανάλυση αλγορίθμων

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

Κεφάλαιο 8. NP και Υπολογιστική Δυσεπιλυσιμότητα. Παύλος Εφραιμίδης V1.1,

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

1η Σειρά Γραπτών Ασκήσεων

Επιμέλεια: Ομάδα Διαγωνισμάτων από Το στέκι των πληροφορικών

Ενότητα 6: Κατακερματισμός Ασκήσεις και Λύσεις

Το μοντέλο Perceptron

Προγραμματισμός Η/Υ. Αναζήτηση & Ταξινόμηση. ΤΕΙ Ιονίων Νήσων Τμήμα Τεχνολόγων Περιβάλλοντος Κατεύθυνση Τεχνολογιών Φυσικού Περιβάλλοντος

Μέθοδοι μονοδιάστατης ελαχιστοποίησης

Quicksort. Πρόβλημα Ταξινόμησης. Μέθοδοι Ταξινόμησης. Συγκριτικοί Αλγόριθμοι

Δομές Δεδομένων (Data Structures)

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

οµηµένος Προγραµµατισµός ΙΙΙ - Java Παύλος Εφραιµίδης οµηµένος Προγρ. ΙΙΙ - 1 Java Το Μάθηµα

οµηµένος Προγραµµατισµός ΙΙΙ - Java

Δοµές Δεδοµένων. ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ Φθινοπωρινό Εξάµηνο Ευάγγελος Μαρκάκης

Αναζήτηση. Στην λειτουργία της αναζήτησης εξακριβώνεται η παρουσία ή η απουσία ενός δεδομένου σε μια δομή δεδομένων.

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 1 Ο. Εισαγωγή στις έννοιες Πρόβλημα, Αλγόριθμος, Προγραμματισμός, Γλώσσες Προγραμματισμού

ΑΡΧΗ 1ης ΣΕΛΙΔΑΣ. ii) Πόσες φορές θα εκτελεστεί η εντολή ΔΙΑΒΑΣΕ Α[μ,λ] στον αλγόριθμο της προηγούμενης ερώτησης; α) 35 β) 12 γ) 20

Ειδικά θέματα Αλγορίθμων και Δομών Δεδομένων (ΠΛΕ073) Απαντήσεις 1 ου Σετ Ασκήσεων

Transcript:

δυαδική αναζήτηση Παύλος Σ. Εφραιμίδης

περιεχόμενα δυαδική αναζήτηση ασύμμετρη δυαδική αναζήτηση δυαδική αναζήτηση με σφάλματα 2

Το πρόβλημα της αναζήτησης 3

Αναζήτηση Το πρόβλημα της αναζήτησης: Δίνεται πίνακας με Ν στοιχεία ταξινομημένα. Το ζητούμενο είναι: Δεδομένου ενός στοιχείου να βρεθεί εάν υπάρχει ή όχι το στοιχείο αυτό μέσα στον πίνακα, και εάν υπάρχει, τότε σε ποια θέση του πίνακα βρίσκεται (εάν το στοιχείο εμφανίζεται πολλές φορές μέσα στον πίνακα, τότε θα θεωρήσουμε ότι μας αρκεί να βρεθεί μία οποιαδήποτε από τις θέσεις αυτές) 4

γραμμική αναζήτηση 5

Γραμμική αναζήτηση Αλγόριθμος: Εξετάζουμε ένα ένα όλα τα στοιχεία του πίνακα, μέχρι να βρεθεί το ζητούμενο στοιχείο ή να εξαντληθεί ο πίνακας Χειρότερης Περίπτωσης: Ο(Ν) για πίνακα Ν στοιχείων Η γραμμική αναζήτηση είναι ένας απλοϊκός αλγόριθμος, που δεν εκμεταλλεύεται τη διάταξη των στοιχείων 6

δυαδική αναζήτηση 7

Δυαδική αναζήτηση Αλγόριθμος: Σε κάθε βήμα επιλέγουμε ένα στοιχείο P του πίνακα και το συγκρίνουμε με το ζητούμενο στοιχείο Χ εάν P < X, επαναλαμβάνουμε την αναζήτηση με το μέρος του πίνακα με τα στοιχεία που είναι μικρότερα του Χ εάν P = X, τερματίζει η διαδικασία εάν P > X, επαναλαμβάνουμε την αναζήτηση με το μέρος του πίνακα με τα στοιχεία που είναι μεγαλύτερα του Χ Τερματισμός: Η διαδικασία τερματίζει όταν βρεθεί το στοιχείο ή όταν δεν απομείνει μέρος του πίνακα για να εξεταστεί 8

Δυαδικής Αναζήτησης Πίνακας Ν στοιχείων: Αρχικά υπάρχουν Ν στοιχεία για την αναζήτηση Μετά το 1ο βήμα απομένουν Ν/2 για την αναζήτηση Μετά το 2ο βήμα απομένουν Ν/4 = Ν/2 2 Μετά το 3ο βήμα απομένουν Ν/8 = Ν/2 3 Μετά το βήμα κ απομένουν Ν/2 κ στοιχεία Το αργότερο όταν απομένουν 1 στοιχεία η διαδικασία τερματίζει Επομένως: Ν/2 κ 1 κ = O(log 2 (N)) Άρα σε κ = O(log 2 (N)) βήματα η διαδικασία τερματίζει Κάθε βήμα της δυαδικής αναζήτησης απαιτεί χρόνο Ο(1) και επομένως η συνολική πολυπλοκότητα χειρότερης περίπτωσης είναι: O(log 2 (N)) 9

παράδειγμα δυαδικής αναζήτησης 10

Παράδειγμα Έστω ο ταξινομημένος πίνακας: 1 2 5 8 9 15 22 27 35 37 38 40 43 45 47 11

Αναζήτηση του αριθμού 38 Βήμα 1 2 5 8 9 15 22 27 35 37 38 40 43 45 47 1 ο 1 2 5 8 9 15 22 27 35 37 38 40 43 45 47 2 ο 1 2 5 8 9 15 22 27 35 37 38 40 43 45 47 3 ο 1 2 5 8 9 15 22 27 35 37 38 40 43 45 47 4 ο 1 2 5 8 9 15 22 27 35 37 38 40 43 45 47 12 Σε κάθε βήμα του αλγορίθμου: Κίτρινο: Το στοιχείο που εξετάζεται Πράσινο: Το τμήμα του πίνακα που απομένει να εξεταστεί Κόκκινο: Τα τμήματα του πίνακα που έχουν αποκλειστεί

Αναζήτηση του αριθμού 39 Βήμα 1 2 5 8 9 15 22 27 35 37 38 40 43 45 47 1 ο 1 2 5 8 9 15 22 27 35 37 38 40 43 45 47 2 ο 1 2 5 8 9 15 22 27 35 37 38 40 43 45 47 3 ο 1 2 5 8 9 15 22 27 35 37 38 40 43 45 47 4 ο 1 2 5 8 9 15 22 27 35 37 38 40 43 45 47 13

δυαδική αναζήτηση μησυμμετρικού κόστους 14

δυαδική αναζήτηση μη-συμμετρικού κόστους έχουμε ένα κτίριο με 100 ορόφους, και ένα αυγό το αυγό δεν είναι ένα τυχαίο αυγό: είναι από αλανιάρα κότα και πάρα πολύ ανθεκτικό ας υποθέσουμε ότι μπροστά στο κτίριο υπάρχει γρασίδι δίνεται ότι το αυγό μπορεί να αντέξει σε πτώση ενδεχομένως μέχρι και από τον 100οστο όροφο θέλουμε να μάθουμε μέχρι ποιον όροφο αντέχει σε πτώση χωρίς να σπάσει πόσες προσπάθειες πρέπει να κάνουμε; Έστω τώρα ότι έχουμε 2 ολόιδια αυγά. Πόσες προσπάθειες πρέπει να κάνουμε για να μάθουμε μέχρι ποιον όροφο αντέχει; Σημείωση: Δεν πειράζει εάν τελικά σπάσουν τα αυγά, αρκεί να έχουμε μάθει ακριβώς μέχρι ποιο όροφο αντέξανε 15

πηγές/αναφορές Σημειώσεις δεύτερου έτους Δομημένος Προγραμματισμός ΙΙΙ - Java για δυαδική αναζήτηση. Εισαγωγή στους αλγορίθμους, Άσκηση 2.3-5 Δομές Δεδομένων, Π. Μποζάνης, Κεφάλαιο 3 Δομές Δεδομένων, N. Wirth, Ενότητες 1.12.1, 1.12.2 Αλγόριθμοι σε Java, R. Sedgewick, Ενότητες 2.6 και 12.4 16