Μάθημα : ΠΛΗΡΟΦΟΡΙΚΗ Γ' ΛΥΚΕΙΟΥ

Κωδικός : D10101

D10101  -   ΔΑΒΙΤΗ ΜΑΓΔΑΛΗΝΗ

Μέθοδος Διαίρει και Βασίλευε - Ενότητα 2. Τεχνικές Σχεδίασης Αλγορίθμων, παράγραφος2.1 Μέθοδος Διαίρει και Βασίλευε

Ερώτηση 1 (Ελεύθερου Κειμένου — 5 βαθμοί) 

Θεωρία

Ενότητα 2. Τεχνικές Σχεδίασης Αλγορίθμων  2.1 Μέθοδος Διαίρει και Βασίλευε

 

Διαίρει και Βασίλευε : Μέθοδος επίλυσης προβλημάτων, που εφαρμόζεται για τη γρήγορη αναζήτηση δεδομένων σε μια υπάρχουσα δομή δεδομένων.

 

Ορισμός : Η «Διαίρει και Βασίλευε» (divide and conquer) αποτελεί μια μέθοδο σχεδίασης αλγορίθμων στην οποία εντάσσονται οι τεχνικές που υποδιαιρούν ένα πρόβλημα σε μικρότερα υποπροβλήματα, που έχουν την ίδια τυποποίηση με το αρχικό πρόβλημα, αλλά είναι μικρότερα σε μέγεθος.

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

Παράδειγμα βιβλίου : Το κάλπικο νόμισμα
Είστε εκτιμητής χρυσών νομισμάτων. Κάποιος σας φέρνει 128 χρυσά νομίσματα και σας λέει ότι ένα από αυτά είναι κάλπικο. Το κάλπικο νόμισμα είναι πανομοιότυπο στην εμφάνιση με τα υπόλοιπα, αλλά επειδή περιέχει λιγότερη ποσότητα χρυσού είναι λίγο πιο ελαφρύ.

Έχετε στη διάθεσή σας μια ζυγαριά ακριβείας με δύο δίσκους.

Πώς θα εντοπίσετε το κάλπικο νόμισμα με όσο το δυνατό λιγότερα ζυγίσματα;

 

Η μέθοδος σχεδίασης αλγορίθμων «Διαίρει και Βασίλευε» μπορεί να αποδοθεί με τα επόμενα βήματα:

  1. Δίνεται για επίλυση ένα στιγμιότυπο ενός προβλήματος.
  2. Το στιγμιότυπο του προβλήματος υποδιαιρείται σε υπο-στιγμιότυπα του ίδιου προβλήματος.
  3. Δίνεται ανεξάρτητη λύση σε κάθε ένα υπο-στιγμιότυπο.
  4. Συνδυάζονται όλες οι μερικές λύσεις που βρέθηκαν για τα υπο-στιγμιότυπα, έτσι ώστε να δοθεί η συνολική λύση του προβλήματος.

Η υλοποίηση της μεθόδου «Διαίρει και Βασίλευε» γίνεται με την επαναληπτική προσέγγιση (με διαδοχικές επαναλήψεις).

 

Ο μέγιστος αριθμός των συγκρίσεων (επαναλήψεων) που απαιτούνται για την εύρεση ενός στοιχείου σε ένα σύνολο «n» ταξινομημένων στοιχείων, συμπεριλαμβανομένης και της περίπτωσης μη ύπαρξης του στοιχείου, δίνεται από το ακέραιο μέρος του [log2(n)+1] (με στρογγυλοποίηση προς τα κάτω).

(log2(n) = x  =>  2^x = n)

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

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

 

Παράδειγμα 1 – Μάντεψε τον αριθμό (παιχνίδι με αντίπαλο τον υπολογιστή)σελ 70

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

ΠΡΟΓΡΑΜΜΑ μάντεψε_τον_αριθμό
ΜΕΤΑΒΛΗΤΕΣ
    ΑΚΕΡΑΙΕΣ: προσ, αρχη_, τελος, μεση, απαντηση
    ΛΟΓΙΚΕΣ: βρεθηκε
    ΧΑΡΑΚΤΗΡΕΣ: απ
ΑΡΧΗ
    ΓΡΑΨΕ 'Σκέψου έναν ακέραιο αριθμό από το 1 μέχρι το 100'
    ΓΡΑΨΕ ' και θα τον μαντέψω το πολύ σε 7 προσπάθειες'
    ΓΡΑΨΕ ' αρκεί να απαντάς ειλικρινά στις ερωτήσεις μου: '
    ΓΡΑΨΕ
    αρχη_<- 1
    τελος <- 100
    προσ <- 0
    βρεθηκε <- ΨΕΥΔΗΣ

    ΟΣΟ αρχη_<=τελος ΚΑΙ βρεθηκε=ΨΕΥΔΗΣ ΕΠΑΝΑΛΑΒΕ

Οι μεταβλητές : αρχη_ και τέλος ορίζουν το εύρος των αριθμών στο οποίο αναζητείται ένας αριθμός

Σε κάθε επανάληψη, το εύρος αυτό αλλάζει, οπότε σε κάθε επανάληψη διαχειριζόμαστε ένα μικρότερο στιγμιότυπο του ίδιου προβλήματος

        προσ <- προσ + 1
        μεση <- (αρχη_ + τελος) div 2
        ΓΡΑΨΕ 'Προσπάθεια ', προσ, 'η'
        ΓΡΑΨΕ ' Είναι ο αριθμός ', μεση, '; '
        ΓΡΑΨΕ 'Δώσε Ν(ΝΑΙ) ή Ο(ΟΧΙ):'

ενημέρωση του μετρητή προσπαθειών -προσ-

εύρεση του μεσαίου αριθμού (μεση) στο εύρος από : αρχή_ έως τελος

εμφάνιση του μεσαίου αριθμού και μηνυμάτων προς το χρήστη

        ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
            ΔΙΑΒΑΣΕ απ
            ΑΝ απ<>'Ν' ΚΑΙ απ<>'ν' ΚΑΙ απ<>'Ο' ΚΑΙ απ<>'ο' ΤΟΤΕ
                ΓΡΑΨΕ 'Λάθος απάντηση. Ξαναπροσπάθησε....'
            ΤΕΛΟΣ_ΑΝ
        ΜΕΧΡΙΣ_ΟΤΟΥ απ='Ν' Η απ='ν' Η απ='Ο' Η απ='ο'

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

        ΑΝ απ='Ν' Η απ ='ν' ΤΟΤΕ
            βρεθηκε <- ΑΛΗΘΗΣ
            ΓΡΑΨΕ 'Τον βρήκα σε ',προσ,' προσπάθεια/ες...'

αν η απάντηση του χρήστη είναι Ν ή ν τότε το πρόγραμμα βρήκε τον αριθμό του χρήστη

η μεταβλητή βρέθηκε γίνεται αληθής ώστε να τερματίσει η επανάληψη

        ΑΛΛΙΩΣ
            ΓΡΑΨΕ 'Ο αριθμός που έβαλες είναι '
            ΓΡΑΨΕ '(1)μεγαλύτερος ή (2)μικρότερος...'
            ΓΡΑΨΕ 'Δώσε απάντηση 1 ή 2: '
            ΔΙΑΒΑΣΕ απαντηση
            ΑΝ απαντηση = 1 ΤΟΤΕ
                αρχη_<- μεση + 1
            ΑΛΛΙΩΣ
                τελος <- μεση - 1
            ΤΕΛΟΣ_ΑΝ
        ΤΕΛΟΣ_ΑΝ

αν η απάντηση του χρήστη δεν είναι Ν ή ν τότε το πρόγραμμα ρωτά το χρήστη αν ο αριθμός του είναι μεγαλύτερος ή μικρότερος από τον μεσαίο αριθμό

αν ο χρήστης απαντήσει ότι ο αριθμός του είναι μεγαλύτερος από τον μεσαίο αριθμό τότε ενημερώνεται η αρχή_ με τον αριθμό που αντιστοιχεί στο μεσαίο αριθμό (μέση) + 1

Με αυτόν το τρόπο απορρίπτονται, θέτονται εκτός ελέγχου, οι αριθμοί στο πρώτο μισό του εύρους των αριθμών 

Αντίστοιχα, αν ο χρήστης απαντήσει ότι ο αριθμός του είναι μικρότερος από τον μεσαίο αριθμό τότε ενημερώνεται το τέλος με τον αριθμό που αντιστοιχεί στο μεσαίο αριθμό (μέση) - 1 και απορρίπτονται οι αριθμοί στο δεύτερο μισό του εύρους των αριθμών  

        ΓΡΑΨΕ '______________________________'

    ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

 
    ΑΝ προσ > 7 Η αρχη_ > τελος ΤΟΤΕ
        ΓΡΑΨΕ 'Δε βρήκα τον αριθμό σε 7 προσπάθειες'
        ΓΡΑΨΕ 'γιατί δεν είσαι ειλικρινής ή '
        ΓΡΑΨΕ 'έκανες κάτι λάθος στη διαδικασία '
        ΓΡΑΨΕ ' που συμφωνήσαμε'
    ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ μάντεψε_τον_αριθμό
 

 

Ερώτηση 2 (Σωστό / Λάθος — 1 βαθμός) 

Η δυαδική αναζήτηση βασίζεται στη μέθοδο «Διαίρει και βασίλευε».

Ερώτηση 3 (Σωστό / Λάθος — 1 βαθμός) 

Η μέθοδος «Διαίρει και βασίλευε» βασίζεται από πάνω προς τα κάτω ανάλυση.

Ερώτηση 4 (Σωστό / Λάθος — 1 βαθμός) 

Η υλοποίηση της μεθόδου «Διαίρει και βασίλευε» πραγματοποιείται με πολλαπλές επαναλήψεις.

Ερώτηση 5 (Σωστό / Λάθος — 1 βαθμός) 

Ο μέγιστος αριθμός των επαναλήψεων που απαιτούνται για την εύρεση ενός στοιχείου σε Ν ταξινομημένα στοιχεία, είναι Α_Μ(log2(n)+1).

Ερώτηση 6 (Σωστό / Λάθος — 1 βαθμός) 

Η «Διαίρει και Βασίλευε» (divide and conquer) αποτελεί μια μέθοδο σχεδίασης αλγορίθμων.

Ερώτηση 7 (Σωστό / Λάθος — 1 βαθμός) 

Σύμφωνα με τη μέθοδο «Διαίρει και βασίλευε» το κάθε στιγμιότυπο του προβλήματος μπορεί να αναλυθεί σε δύο ή περισσότερα υποστιγμιότυπα μικρότερου μεγέθους

Ερώτηση 8 (Σωστό / Λάθος — 1 βαθμός) 

Ο συνδυασμός των λύσεων των υποπροβλημάτων στα οποία αναλύθηκε ένα πρόβλημα με τη μέθοδο «Διαίρει και βασίλευε» είναι το τελικό βήμα της σχετικής μεθόδου.

Ερώτηση 9 (Σωστό / Λάθος — 1 βαθμός) 

Η «Διαίρει και Βασίλευε» βασίζεται στην υποδιαίρεση ενός προβλήματος σε μικρότερα των οποίων η σύνθεση των λύσεων οδηγεί στην επίλυση του αρχικού προβλήματος.

Ερώτηση 10 (Αντιστοίχιση — 3 βαθμοί) 

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

Ερώτηση 11 (Συμπλήρωση Κενών (Χαλαρή Ταυτοποίηση) — 4 βαθμοί) 

Το παρακάτω τμήμα προγράμματος διαβάζει έναν ακέραιο αριθμό και εμφανίζει το πλήθος των ψηφίων του. Συμπληρώστε τα κενά.

ΔΙΑΒΑΣΕ Α

Π  <-  _____

ΟΣΟ  Α  <>  ______  ΕΠΑΝΑΛΑΒΕ

   Α  <-  ______

   Π  <-  ______

ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

ΓΡΑΨΕ Π


Απάντηση
ΔΙΑΒΑΣΕ Α
Π <-
ΌΣΟ Α <> ΕΠΑΝΑΛΑΒΕ
Α <-
Π <-
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ Π

Ερώτηση 12 (Συμπλήρωση Κενών (Χαλαρή Ταυτοποίηση) — 4 βαθμοί) 

Παιχνίδι

Σε παιχνίδι κάθονται άνθρωποι στη σειρά με δείκτη αρίθμησης 1,2,3 …. Οι πόντοι ζωής του καθένα είναι ο αριθμός του υψωμένος στο τετράγωνο.

Κάθε παίκτης όταν αντιμετωπίζει κάποιον αντίπαλο χάνει τόσους πόντους όσοι είναι οι πόντοι του αντίπαλου και οι παίκτες που αντιμετωπίζει προκύπτουν με βάση τη σειρά πού κάθονται.

Το παρακάτω πρόγραμμα εμφανίζει πόσους παίκτες μπορεί να βγάλει από το παιχνίδι ένας παίκτης με δύναμη Ρ.

Συμπληρώστε τα κενά.

 

ΠΡΟΓΡΑΜΜΑ ΠΑΙΧΝΙΔΙ

ΜΕΤΑΒΛΗΤΕΣ

   ΑΚΕΡΑΙΕΣ : ΠΟΝΤΟΙ, Π , Ι

ΑΡΧΗ

  ΔΙΑΒΑΣΕ ΠΟΝΤΟΙ

  Ι  <-   _______

  Π  <-  0

  ΟΣΟ _________ ΕΠΑΝΑΛΑΒΕ

      ΠΟΝΤΟΙ   <-  ΠΟΝΤΟΙ  -  ______

      Ι  <-   Ι +  1

      _________

  ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

  ΓΡΑΨΕ Π

ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ


Απάντηση
ΠΡΟΓΡΑΜΜΑ ΠΑΙΧΝΙΔΙ
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ : ΠΟΝΤΟΙ, Π , Ι
ΑΡΧΗ
ΔΙΑΒΑΣΕ ΠΟΝΤΟΙ
Ι <-
Π <- 0
ΟΣΟ ΕΠΑΝΑΛΑΒΕ
ΠΟΝΤΟΙ <- ΠΟΝΤΟΙ -
Ι <- Ι + 1

ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
ΓΡΑΨΕ Π
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ