You are on page 1of 5

Διαίρει και βασίλευε – Δυαδική αναζήτηση

Ερωτήσεις θεωρίας

1. Να περιγράψετε την μέθοδο Διαίρει και βασίλευε.


Απάντηση (σελ. 68)
Η «Διαίρει και Βασίλευε» (divide and conquer) αποτελεί μια μέθοδο σχεδίασης αλγορίθμων στην
οποία εντάσσονται οι τεχνικές που υποδιαιρούν ένα πρόβλημα σε μικρότερα υποπροβλήματα,
που έχουν την ίδια τυποποίηση με το αρχικό πρόβλημα, αλλά είναι μικρότερα σε μέγεθος. Με
όμοιο τρόπο, τα υποπροβλήματα αυτά μπορούν να διαιρεθούν σε ακόμη μικρότερα
υποπροβλήματα κ.ο.κ. Έτσι η επίλυση ενός προβλήματος έγκειται στη σταδιακή επίλυση των
όσο το δυνατόν μικρότερων υποπροβλημάτων, ώστε τελικά να προκύψει η συνολική λύση του
αρχικού ευρύτερου προβλήματος. Η προσέγγιση αυτή ονομάζεται «από πάνω προς τα κάτω»
(top-down).

2. Με ποια βήματα μπορεί να αποδοθεί (να εφαρμοσθεί) η μέθοδος Διαίρει και βασίλευε;
Απάντηση (σελ. 68)
Η μέθοδος σχεδίασης αλγορίθμων «Διαίρει και Βασίλευε» μπορεί να αποδοθεί με τα επόμενα
βήματα:
1. Δίνεται για επίλυση ένα στιγμιότυπο ενός προβλήματος.
2. Το στιγμιότυπο του προβλήματος υποδιαιρείται σε υπο-στιγμιότυπα του ίδιου
προβλήματος.
3. Δίνεται ανεξάρτητη λύση σε κάθε ένα υπο-στιγμιότυπο.
4. Συνδυάζονται όλες οι μερικές λύσεις που βρέθηκαν για τα υπο-στιγμιότυπα, έτσι ώστε
να δοθεί η συνολική λύση του προβλήματος.

3. Ποιος είναι ο μέγιστος αριθμός των επαναλήψεων που απαιτούνται για την εύρεση ενός
στοιχείου σε ένα σύνολο «n» ταξινομημένων στοιχείων; (σελ. 69)
Απάντηση (σελ. 69)
Ο μέγιστος αριθμός των συγκρίσεων (επαναλήψεων) που απαιτούνται για την εύρεση ενός
στοιχείου σε ένα σύνολο «n» ταξινομημένων στοιχείων, συμπεριλαμβανομένης και της
περίπτωσης μη ύπαρξης του στοιχείου, δίνεται από το ακέραιο μέρος του [log2(n)+1] (με
στρογγυλοποίηση προς τα κάτω), η απόδειξη του οποίου υπερβαίνει τα όρια της διδακτέας
ύλης του μαθήματος. Επομένως, για την εύρεση του μέγιστου πλήθους των επαναλήψεων
θεωρείται γνωστό το log2(n). Για παράδειγμα, σε ένα σύνολο 100 ταξινομημένων στοιχείων
(n=100), ο μέγιστος αριθμός συγκρίσεων (επαναλήψεων) είναι:
[log2(100)+1]=[6,643856+1]=[7,643856]=7

4. Δώστε ένα παράδειγμα αλγορίθμου, που εφαρμόζει την τεχνική σχεδίασης «Διαίρει και
Βασίλευε».
Απάντηση
Ένας κλασικός αλγόριθμος που ακολουθεί τη φιλοσοφία της μεθόδου «Διαίρει και Βασίλευε»
είναι η Δυαδική αναζήτηση.

5. Πότε εφαρμόζεται η Δυαδική αναζήτηση, πρέπει να πληρείται κάποια προϋπόθεση;


Απάντηση
Η Δυαδική αναζήτηση οποία εφαρμόζεται μόνο στην περίπτωση ταξινομημένου συνόλου
στοιχείων.
Ασκήσεις

1. Σ/Λ
α. Η δυαδική αναζήτηση δεν μπορεί να λειτουργήσει σε μη ταξινομημένο πίνακα.
β. Για την αναζήτηση σε ταξινομημένους πίνακες προτιμάται η δυαδική αναζήτηση.

2. Δίνεται ο πίνακας 9 θέσεων με στοιχεία 1 3 6 9 20 35 51 65 93 και εφαρμόζεται ο αλγόριθμος


δυαδικής αναζήτησης. Ο χρήστης εισάγει την τιμή 65 προς αναζήτηση.
α. Ποιο θα είναι το αποτέλεσμα της αναζήτησης;
β. Πόσες επαναλήψεις θα γίνουν μέχρι να βρεθεί η θέση του ζητούμενου;
γ. Πόσες επαναλήψεις θα γινόταν με την σειριακή;
δ. Ποιος είναι o μέγιστος αριθμός των επαναλήψεων που απαιτούνται για την εύρεση
ενός στοιχείου στον παραπάνω πίνακα;
ε. Ποιος είναι o μέγιστος αριθμός των επαναλήψεων που απαιτούνται για την εύρεση
ενός στοιχείου στον παραπάνω πίνακα, εφαρμόζοντας σειριακή αναζήτηση;

3. Ένα κατάστημα ένδυσης χρησιμοποιεί κάποιο σύστημα πληροφοριών το οποίο ελέγχει τη


διαθεσιμότητα του κάθε προϊόντος. Το συγκεκριμένο σύστημα πληροφοριών χρησιμοποιεί τον
αλγόριθμο της δυαδικής αναζήτησης. Στον πίνακα Κ[16] έχουν καταγραφεί οι κωδικοί των
προϊόντων που διαθέτει το κατάστημα.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
10 12 20 26 48 55 77 82 90 100 120 124 140 180 200 210

Εάν υποθέσουμε ότι ο υπάλληλος αναζητεί την τιμή 140, γράψτε με τη σειρά τις τιμές που
επισκεφθήκατε εφαρμόζοντας τον εν λόγω αλγόριθμο.

4. Έστω ότι δίνεται ο μονοδιάστατος πίνακας Α[10] με τα εξής στοιχεία:

1 2 3 4 5 6 7 8 9 10
-5 6 8 15 27 44 69 75 88 100

Συμπληρώστε το πλήθος των απαιτούμενων συγκρίσεων για την εύρεση των κάτωθι
στοιχείων χρησιμοποιώντας τον αλγόριθμο της δυαδικής αναζήτησης.
α. -5
β. 6
γ. 44
δ. 69
ε. 100

5. Γενικώς η δυαδική αναζήτηση είναι αποδοτικότερη και ταχύτερη σε σύγκριση με τη σειριακή.


Να δώσετε ένα παράδειγμα στο οποίο η σειριακή αναζήτηση είναι αποδοτικότερη και ταχύτερη
από τη δυαδική;

6. Δίνεται το κάτωθι τμήμα προγράμματος. Να συμπληρώσετε τα κενά έτσι ώστε να υλοποιείται


ορθώς ο αλγόριθμος της δυαδικής αναζήτησης σε ταξινομημένο πίνακα σε αύξουσα σειρά.
Διάβασε key
found ← ψευδής
arxh ← __(1)__
telos ← __(2)__
mesos ← 0
όσο (__(3)__ <= __(4)__) και (found = ψευδής) επανάλαβε
mesos ← (__(5)__ + __(6)__) div __(7)__
αν __(8)__ = Α[__(9)__] τοτε
found ← __(10)__
αλλιώς_αν key < Α[mesos] τότε
telos ← mesos - __(11)__
αλλιώς
arxh ← mesos + __(12)__
τέλος_αν
τέλος_επανάληψης

7. Η πόλη του Γκόθαμ δέχεται επίθεση από κακοποιούς. Ο Τζόκερ έχει συλλάβει ως ομήρους τον
Δήμαρχο και τον Εισαγγελέα της πόλης και τους έχει κρύψει σε μία από τις 500 κυψέλες της
ομοσπονδιακής φυλακής της πόλης. Ο Μπάτμαν καλείται να τους βρει και να τους σώσει
έχοντας στη διάθεσή του ελάχιστο χρόνο και ελάχιστες προσπάθειες. Ως τόσο ο Άλφρεντ, ως
πανέξυπνος βοηθός του, του έχει δώσει ένα μηχάνημα θερμικής ανίχνευσης που εντοπίζει σε
ποια κατεύθυνση (αριστερά ή δεξιά) βρίσκονται άνθρωποι. Γνωρίζοντας ότι οι κυψέλες της
φυλακής είναι τοποθετημένες η μία δίπλα στην άλλη και αριθμημένες από το 1 έως το 500, να
γραφεί πρόγραμμα το οποίο θα διαβάζει τον αριθμό της κυψέλης, που ο Τζόκερ έχει κρύψει
τους ομήρους. Στη συνέχεια, με χρήση του κατάλληλου αλγορίθμου και με την πληροφορία της
ύπαρξης του μηχανήματος ανίχνευσης θερμικής ενέργειας που ενημερώνει προς ποια
κατεύθυνση βρίσκονται παγιδευμένοι άνθρωποι, να βοηθήσετε τον Μπάτμαν να εντοπίσει και
να σώσει τους ομήρους.
Το πρόγραμμα να εμφανίζει στο τέλος τον αριθμό της κυψέλης όπου είχαν παγιδευτεί οι όμηροι
και τις προσπάθειες του Μπάτμαν μέχρι να εντοπίσει τους ομήρους.

8. Ένας βασιλιάς παραλαμβάνει 64 χρυσά νομίσματα σε φόρους, αλλά έχει βάσιμες υποψίες ότι
ένα από αυτά είναι κάλπικο. Σας καλεί στο παλάτι για να εντοπίσετε το κάλπικο νόμισμα. Έχετε
στη διάθεσή σας μια ζυγαριά παλαιού τύπου με δύο δίσκους στους οποίους μπορείτε να
τοποθετείτε νομίσματα. Πόσες φορές πρέπει να χρησιμοποιήσετε τη ζυγαριά για να βρείτε το
ελαφρύτερο, κάλπικο νόμισμα; Επιλέξτε μία από τις απαντήσεις:
α) 6 β) 5 γ) 4 δ) 3

9. Ένα παιδί παίζει με τον υπολογιστή το παιχνίδι «Μάντεψε τον αριθμό». Οι κανόνες του
παιχνιδιού είναι οι εξής:
• Το παιδί αποτυπώνει στο μυαλό του έναν αριθμό από το 1 έως το 100.
• Ο υπολογιστής προσπαθεί να μαντέψει τον αριθμό το πολύ σε 7 προσπάθειες
• Κάθε φορά που ο υπολογιστής προτείνει έναν αριθμό, με κατάλληλο μήνυμα στην
οθόνη, ρωτά το παιδί να του απαντήσει, μέσω του πληκτρολογίου, αν ο αριθμός που
μάντεψε ο υπολογιστής, είναι αυτός που έχει βάλει το παιδί στο μυαλό του ή αν είναι
μεγαλύτερος ή μικρότερος.
Να αναπτύξετε πρόγραμμα που να υλοποιεί το παραπάνω παιχνίδι:
α. Ο υπολογιστής με κατάλληλο μήνυμα σας ζητάει να σκεφτείτε έναν ακέραιο αριθμό από το
1 μέχρι το 100.
β. Ο υπολογιστής εμφανίζει κατάλληλο μήνυμα που σας πληροφορεί ότι θα βρει τον αριθμό
το πολύ με 7 προσπάθειες.
γ. Ο υπολογιστής με κατάλληλο μήνυμα προτείνει έναν ακέραιο αριθμό και στη συνέχεια
(μέσω κατάλληλου μηνύματος) ζητάει να πληκτρολογήσετε αν ο αριθμός αυτός είναι ίδιος,
μεγαλύτερος ή μικρότερος από τον αριθμό που είχατε σκεφτεί.
δ. Όταν ο υπολογιστής μαντέψει τον αριθμό που σκεφθήκατε, εμφανίζει στην οθόνη
κατάλληλο μήνυμα με τον αριθμό αυτό, καθώς και τον αριθμό των προσπαθειών που έκανε
μέχρι να τον βρει.

10. 2016 (Α ΘΕΜΑ)

Δίδεται πίνακας ΠΙΝ[7] με τις παρακάτω τιμές:


2 5 8 12 15 17 22
και το παρακάτω τμήμα αλγορίθμου:

low ← 1
high ←7
found ← ΨΕΥΔΗΣ
Όσο low ≤ high ΚΑΙ found = ΨΕΥΔΗΣ επανάλαβε
mid ←(low+high) DIV 2
Εμφάνισε ΠΙΝ[mid]
Αν ΠΙΝ[mid] < Χ τότε
low ← mid+1
Αλλιώς_αν ΠΙΝ[mid] > Χ τότε
high ← mid-1
Αλλιώς
found ← ΑΛΗΘΗΣ
Τέλος_αν
Τέλος_Επανάληψης

Να γράψετε στο τετράδιό σας τις τιμές οι οποίες θα εμφανιστούν για:


α) Χ=22 (μονάδες 3)
β) Χ=7 (μονάδες 3)

Μονάδες 6

11. Θέμα Β, Ερώτημα 1, 2016, Ημερήσια, Παλαιό

Δίνεται το παρακάτω τμήμα αλγορίθμου, στο οποίο έχουν αριθμηθεί οι εντολές εκχώρησης
και εξόδου.

01 ΔΙΑΒΑΣΕ X
02 ΠΛ<– 0
03 ΑΡ <– 1
04 ΔΕ <– 12
05 Β <– ΨΕΥΔΗΣ
ΟΣΟ Β = ΨΕΥΔΗΣ ΚΑΙ ΑΡ <= ΔΕ ΕΠΑΝΑΛΑΒΕ
06 Μ <– (ΑΡ + ΔΕ) DIV 2
AN A[M] = X TOTE
07 B <– ΑΛΗΘΗΣ
ΑΛΛΙΩΣ_ΑΝ Α[Μ] < Χ ΤΟΤΕ
08 ΑΡ <– Μ + 1
ΑΛΛΙΩΣ
09 ΔΕ <– Μ – 1
ΤΕΛΟΣ ΑΝ
10 ΠΛ <– ΠΛ + 1
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΑΝ Β = ΑΛΗΘΗΣ ΤΟΤΕ
11 ΕΜΦΑΝΙΣΕ Μ
ΑΛΛΙΩΣ
12 ΕΜΦΑΝΙΣΕ “ΔΕΝ ΒΡΕΘΗΚΕ”, ΠΛ
ΤΕΛΟΣ_ΑΝ

Για την παρακολούθηση της εκτέλεσης του τμήματος αλγορίθμου με τιμή εισόδου Χ = 35 και
με δεδομένο τον πίνακα Α[12].

1 2 3 4 5 6 7 8 9 10 11 12
3 10 18 20 26 32 35 48 55 60 75 90

δίνεται το παρακάτω υπόδειγμα πίνακα τιμών ,συμπληρωμένο ως εξής:

Στη στήλη με τίτλο «Αρ. Γρ.» καταγράφεται ο αριθμός γραμμής της εντολής που εκτελείται.
Στη στήλη με τίτλο «Έξοδος» καταγράφεται η τιμή εξόδου, εφόσον η εντολή που εκτελείται
είναι εντολή εξόδου.
Οι υπόλοιπες στήλες του πίνακα τμήματος του αλγορίθμου αντιστοιχούν στις μεταβλητές του
τμήματος του αλγορίθμου.

Να μεταφέρετε τον πίνακα τιμών στο τετράδιό σας και να προσθέσετε τις γραμμές που
χρειάζονται, συνεχίζοντας την εκτέλεση του τμήματος αλγορίθμου ως εξής: για κάθε
αριθμημένη εντολή που εκτελείται, να γράψετε τον αριθμό της γραμμής της εντολής σε νέα
γραμμή του πίνακα και το αποτέλεσμα της εκτέλεσης της εντολής στην αντίστοιχη στήλη.

You might also like