Αναζήτηση σε πίνακα Αναζήτηση σε πίνακα που περιέχει ακέραιους αριθμούς.

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Δομές στην C (επανάληψη)
Advertisements

3.4 Στοίβα (stack) (μόνο θεωρία)
Δένδρα van Emde Boas TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A A A Μελετάμε την περίπτωση όπου αποθηκεύουμε.
Παράδειγμα 1:Σειριακή αναζήτηση
Γεωργαλλίδης Δημήτρης Καθηγητής Πληροφορικής
Διακριτά Μαθηματικά ΙI Δυαδικά Δέντρα Αναζήτησης
Εισαγωγή στους Ηλεκτρονικούς Υπολογιστές
Εισαγωγή στην επιστήμη των υπολογιστών
ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ
Βάσεις Δεδομένων Ευαγγελία Πιτουρά1 Δυναμικός Κατακερματισμός.
Αλγόριθμοι Ταξινόμησης
Γιάννης Σταματίου Μη αποδοτική αναδρομή και η δυναμική προσέγγιση Webcast 8.
ΗΥ-150 Προγραμματισμός Εντολές Ελέγχου Ροής.
Επιλογή Διδάσκοντες: Σ. Ζάχος, Δ. Φωτάκης Επιμέλεια διαφανειών: Δ. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο.
Δυαδικά Δένδρα Αναζήτησης, Δένδρα AVL
ΗΥ150 – Προγραμματισμός Ξενοφών Ζαμπούλης ΗΥ-150 Προγραμματισμός Ταξινόμηση και Αναζήτηση.
Κοντινότεροι Κοινοί Πρόγονοι α βγ θ δεζ η π ν ι κλμ ρσ τ κκπ(λ,ι)=α, κκπ(τ,σ)=ν, κκπ(λ,π)=η κκπ(π,σ)=γ, κκπ(ξ,ο)=κ ξο κκπ(ι,ξ)=β, κκπ(τ,θ)=θ, κκπ(ο,μ)=α.
Διαίρει-και-Βασίλευε
Δομές Αναζήτησης TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A A A Χειριζόμαστε ένα σύνολο στοιχείων όπου το κάθε.
Σχεδίαση Αλγορίθμων - Τμήμα Πληροφορικής ΑΠΘ - Εξάμηνο 4ο1 Ωμή Βία Είναι μία άμεση προσέγγιση που βασίζεται στην εκφώνηση του προβλήματος και τους ορισμούς.
Δυναμικη Δεσμευση Μνημης Συνδεδεμενες Λιστες (dynamic memory allocation, linked lists) Πως υλοποιουμαι προγραμματα που δεν γνωριζουμε πριν την εκτελεση.
ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ
Ταξινόμηση και Αναζήτηση
Αλγόριθμοι Ταξινόμησης
Διαφάνειες παρουσίασης Πίνακες (συνέχεια) Αριθμητικοί υπολογισμοί Αναδρομή.
Λεξικό, Union – Find Διδάσκοντες: Σ. Ζάχος, Δ. Φωτάκης Επιμέλεια διαφανειών: Δ. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο.
Quicksort Διδάσκοντες: Σ. Ζάχος, Δ. Φωτάκης Επιμέλεια διαφανειών: Δ. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο.
Advanced Data Indexing (Προηγμένη ευρετηρίαση δεδομένων) Κατακερματισμός – Hashing (1 ο Μέρος)
Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Εισαγωγή στην Επεξεργασία Ερωτήσεων.
Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - 4ο εξάμηνο1 Ανάλυση Αλγορίθμων b Θέματα: Ορθότητα Χρονική αποδοτικότητα Χωρική αποδοτικότητα Βελτιστότητα b Προσεγγίσεις:
ΑΕΠΠ 3ο Κεφάλαιο Γεωργαλλίδης Δημήτρης Καθηγητής Πληροφορικής 1 Ο Λύκειο Ρόδου.
 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον:  Τεχνικές Διδασκαλίας.
Θεωρία Γράφων Θεμελιώσεις-Αλγόριθμοι-Εφαρμογές TSP, Μέτρα κεντρικότητας, Dijkstra Data Engineering Lab.
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
Βάσεις Δεδομένων Ευαγγελία Πιτουρά1 Επεξεργασία Ερωτήσεων.
ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Διδάσκοντες:Γιάννης Μαΐστρος Στάθης Ζάχος Νίκος Παπασπύρου
1 Κέλυφος Bash – Τι μάθαμε? Μεταξύ άλλων…  Συνθήκες ελέγχου (if, case…) και βρόχοι επανάληψης (for, while)  Πράξεις ακεραίων (let, expr) και δεκαδικών.
ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ ΣΕΡΡΩΝ ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΚΩΝ ΕΦΑΡΜΟΓΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ & ΕΠΙΚΟΙΝΩΝΙΩΝ ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ ΘΕΜΑ: Πολυπλοκότητα αλγορίθμων πολυωνυμικής.
Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Ευρετήρια.
ΗΥ150 – ΠρογραμματισμόςΞενοφών Ζαμπούλης ΗΥ-150 Προγραμματισμός Αναδρομή (1/2)
ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης ΗΥ-150 Προγραμματισμός Τύποι Μεταβλητών Τελεστές Βασική Είσοδος/Έξοδος.
8-1 ΜΑΘΗΜΑ 8 ο Εισαγωγή στους Αλγόριθμους Ταξινόμησης.
Προγραμματισμός ΗΥ Ενότητα 6: Δισδιάστατοι πίνακες.
Δομές Δεδομένων και Αρχεία
ΘΕΣΜΟΣ ΦΡΟΝΤΙΣΤΗΡΙΟ Μ.Ε επιμέλεια: ΚΕΡΜΕΝΙΔΟΥ ΗΛΙΑΝΑ ΘΕΜΑ Α Α1 Απόδειξη σελ.150 Α2 Ορισμός σελ.87 Α3 Ορισμός σελ.14 Α4Σ,Λ,Σ,Σ,Λ.
ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ «Εισαγωγή στον οντοκεντρικό προγραμματισμό (βασική εισαγωγή στο περιβάλλον εργασίας)» Ρουσσάκης Ιωάννης, ΤΕΙ Κρήτης,
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Θεσσαλίας Προγραμματισμός ΗΥ Ενότητα 4: Επαναληπτικές δομές. Διδάσκων: Ηλίας Κ Σάββας, Αναπληρωτής Καθηγητής. Τμήμα Μηχανικών.
17η Διάλεξη Ισορροπημένα δέντρα Ε. Μαρκάκης
ΔΥΑΔΙΚΗ ΑΝΑΖΗΤΗΣΗ & ΤΑΞΙΝΟΜΗΣΗ ΜΕ ΣΥΓΧΩΝΕΥΣΗ. Δυαδική αναζήτηση (Binary search) ΔΕΔΟΜΕΝΟ: ένα μεγάλο αρχείο που περιέχει τιμές z [0,1,…,n-1] ταξινομημένες.
Δειγματοληψία Στην Επαγωγική στατιστική οδηγούμαστε σε συμπεράσματα και αποφάσεις για τις παραμέτρους ενός πληθυσμού με τη βοήθεια ενός τυχαίου δείγματος.
Δυναμικός Κατακερματισμός
Δομές Δεδομένων 2η Διάλεξη Αλγόριθμοι Ένωσης-Εύρεσης (Union-Find)
9η Διάλεξη Ταξινόμηση Ε. Μαρκάκης
Διδάσκων: Δρ. Τσίντζα Παναγιώτα
Ενισχυτική διδασκαλία
Εισαγωγή στον Προγ/μό Υπολογιστών
for (παράσταση_1; παράσταση_2; παράσταση_3)
Αρχεσ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Η/Υ ΤΑξη Β΄
Τεχνολογία και Προγραμματισμός Υπολογιστών
Ομαδοποιημένη Κατανομή Συχνοτήτων
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
Ειδικά Θέματα στον Προγραμματισμό Υπολογιστών
Σειριακή ή Γραμμική Αναζήτηση 1.Μοναδικό Κλειδί (key)
Ουρά Προτεραιότητας (priority queue)
Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον ΑΕΠΠ
19η Διάλεξη Εξωτερική Αναζήτηση και Β-δέντρα Ε. Μαρκάκης
14η Διάλεξη Δέντρα Δυαδικής Αναζήτησης Ε. Μαρκάκης
Δυναμικός Κατακερματισμός
Λήψη Αποφάσεων και Συναρτήσεις Ελέγχου
Μεταγράφημα παρουσίασης:

Αναζήτηση σε πίνακα Αναζήτηση σε πίνακα που περιέχει ακέραιους αριθμούς

ΣΕΙΡΙΑΚΗ ΑΝΑΖΗΤΗΣΗ Είναι η απλούστερη μέθοδος αναζήτησης. Σύμφωνα με αυτήν, τα στοιχεία του πίνακα ελέγχονται σειριακά, (το ένα μετά το άλλο δηλαδή) ξεκινώντας από την αρχή, μέχρι να βρούμε το ζητούμενο, γίνονται δηλαδή συνεχείς συγκρίσεις των στοιχείων του πίνακα με την αναζητούμενη τιμή. Στην περίπτωση ταξινομημένου πίνακα, εάν δηλαδή τα στοιχεία του πίνακα είναι «τακτοποιημένα» κατά αυξανόμενο μέγεθος, η αναζήτηση συνεχίζεται μέχρι να επισημανθεί το στοιχείο ή μέχρι να βρούμε τιμή μεγαλύτερη από την ζητούμενη, οπότε η αναζήτηση έχει προφανώς αποτύχει. Αντίστοιχα ισχύουν για πίνακα ταξινομημένο κατά φθίνον μέγεθος Ο μέγιστος αριθμός των συγκρίσεων στη σειριακή αναζήτηση είναι Ν (όταν το αναζητούμενο στοιχείο βρίσκεται στην τελευταία θέση του πίνακα ή δεν υπάρχει στον πίνακα)

Παράδειγμα int pin[N], pos=-1; ……………………….. for (k=0; k<N; k++) { if (pin[k] == num) pos = k; break; }

ΔΥΑΔΙΚΗ ΑΝΑΖΗΤΗΣΗ Για την εφαρμογή της δυαδικής αναζήτησης (binary search) απαιτείται ο πίνακας να είναι ταξινομημένος. Το ζητούμενο στοιχείο συγκρίνεται με την τιμή του στοιχείου, το οποίο βρίσκεται στη μεσαία θέση του πίνακα. Στη συνέχεια προχωρούμε ως εξής: Αν το ζητούμενο στοιχείο είναι το «μεσαίο» στοιχείο του πίνακα, τότε η αναζήτηση τελειώνει. Αν το ζητούμενο στοιχείο είναι μεγαλύτερο από το «μεσαίο», τότε ο πρώτος μισός πίνακας αγνοείται και η αναζήτηση συνεχίζεται με τον ίδιο τρόπο μεταξύ των στοιχείων που βρίσκονται μετά το μεσαίο. Συγκρίνουμε δηλαδή το στοιχείο που αναζητούμε με το «μεσαίο» στοιχείο του δεύτερου μισού πίνακα του αρχικού κ.ο.κ. Αν το ζητούμενο στοιχείο είναι μικρότερο από το «μεσαίο», τότε ο δεύτερος μισός πίνακας αγνοείται και η αναζήτηση συνεχίζεται με αντίστοιχο με τον πιο πάνω τρόπο μεταξύ των στοιχείων που βρίσκονται πριν το μεσαίο. Η αναζήτηση συνεχίζεται με τον ίδιο τρόπο μέχρι να βρεθεί το ζητούμενο στοιχείο ή να μην υπάρχουν άλλα στοιχεία για εξέταση.

Παράδειγμα σε C ………………………………………….. int pin[N]; int low=0, high=N-1; int exist=0, position=0, i, ser; scanf("%d", &ser); while (low <= high && exist = = 0) { i = (int)ceil (low+high) / 2; if (ser = =pin[i]) { exist = 1; position = i; } else if (ser < pin[i]) high = i-1; else low = i+1; } printf("%d %d\n", exist, position);

Πολυπλοκότητα στη δυαδική αναζήτηση Αριθμός επανάληψης Αριθμός στοιχείων του πίνακα 1Ν 2Ν/2 3Ν/22 4 Ν/23 iN/2i Στην χειρότερη περίπτωση οι επαναλήψεις του βρόχου while σταματούν όταν ο πίνακας στον οποίο πρέπει να ψάξουμε περιέχει ένα μόνο στοιχείο, δηλαδή: N/2i = 1  2i = N  log2 2i = log2N  i = log2N

Σύγκριση σειριακής και δυαδικής αναζήτησης Ν (πλήθος στοιχείων του πίνακα) Μέγιστος αριθμός συγκρίσεων Σειριακή αναζήτησηΔυαδική αναζήτηση

ΑΝΑΖΗΤΗΣΗ ΠΑΡΕΜΒΟΛΗΣ Για την υλοποίηση του αλγόριθμου αναζήτησης παρεμβολής (interpolation search) υποτίθεται ότι έχουμε ταξινομημένο πίνακα κατά αυξανόμενο μέγεθος και προσπαθούμε να εντοπίσουμε την αναζητούμενη τιμή, εκτιμώντας κάθε φορά πόσο μακριά από την θέση του πίνακα την οποία ελέγχουμε, είναι πιθανό να βρίσκεται το ζητούμενο στοιχείο. Ας θυμηθούμε ότι στην δυαδική αναζήτηση υποδιπλασιάζουμε κάθε φορά τον «χώρο» αναζήτησης. Η αποδοτικότητα του αλγορίθμου εξαρτάται από την στατιστική κατανομή των στοιχείων του πίνακα. Αν τα στοιχεία είναι ομοιόμορφα κατανεμημένα, τότε η μέθοδος αυτή είναι η καλύτερη από όλες τις άλλες μεθόδους αναζήτησης που εξετάσαμε πιο πάνω. Η μέθοδος πάντως είναι κατώτερη από τις προηγούμενες εάν η κατανομή των στοιχείων δεν είναι ομοιόμορφη.

Παράδειγμα σε C int search(int table[ ], int low, int high, int num) { float fmid, fhigh; int mid, pos; fhigh = (float) high; while ((table[high] >= num) && (num > table[low])) { fmid=low+((fhigh - low)*(num- table[low])/(table[high]- table[low]); mid = (int)ceil(fmid); if (num > table[mid]) low = mid + 1; else if (num < table[mid]) high = mid - 1; else low = mid; } if (num == table[low]) pos = low; else pos = -1; return pos; } {5, 6, 7, 9, 10, 20, 30, 70, 100, 101, 105, 106, 110, 200, 300, 400} low ← 0, high ← 15, fhigh ← 15.0 fmid ← * (200 – 5) / (400 – 5), άρα: fmid ← 7.405, άρα: mid← 8 table[8] == 100, άρα num > table[8], άρα low ← mid+1, δηλαδή low ← 9 low ← 9, high ← 15, fhigh ← 15.0 fmid ← * (200 – 101) / (400 – 101), άρα: fmid ← , άρα: mid ← 11 table[11] == 106, άρα num > table[11], άρα low ← mid+1, δηλαδή low ← 12 low ← 12, high ← 15, fhigh ← 15.0 fmid ← * (200 – 110) / (400 – 110), άρα: fmid ← , άρα: mid ← 13 table[13] == 200, άρα: pos ← 13.