ΚΕΦΑΛΑΙΟ(5:(Αλγόριθμοιpages.cs.aueb.gr/courses/epl131/files/Κ5-Αλγόριθμοι-2013.pdf ·...

56
ΚΕΦΑΛΑΙΟ 5: Αλγόριθμοι 5.1 Η έννοια του αλγορίθμου 5.2 Αναπαράσταση αλγορίθμων 5.3 Επινόηση αλγορίθμων 5.4 Δομές επανάληψης 5.5 Αναδρομικές δομές 5.6 Απόδοση και ορθότητα Οι διαφάνειες βασίζονται σε μεγάλο βαθμό σε αυτές που συνοδεύονταιμε το προτεινόμενο σύγγραμμα, καθώςκαι στις διαφάνειεςπροηγούμενων ετών του κ. Κουρκουμπέτη. 1

Transcript of ΚΕΦΑΛΑΙΟ(5:(Αλγόριθμοιpages.cs.aueb.gr/courses/epl131/files/Κ5-Αλγόριθμοι-2013.pdf ·...

Page 1: ΚΕΦΑΛΑΙΟ(5:(Αλγόριθμοιpages.cs.aueb.gr/courses/epl131/files/Κ5-Αλγόριθμοι-2013.pdf · Βήματα(επίλυσης(προβλήματος Βήματα(κατά(τον(Polya

ΚΕΦΑΛΑΙΟ  5:  Αλγόριθμοι

● 5.1  Η  έννοια  του  αλγορίθμου● 5.2  Αναπαράσταση  αλγορίθμων● 5.3  Επινόηση  αλγορίθμων● 5.4  Δομές  επανάληψης● 5.5  Αναδρομικές  δομές● 5.6  Απόδοση  και  ορθότητα

Οι  διαφάνειες  βασίζονται  σε  μεγάλο  βαθμό  σε  αυτές  που  συνοδεύονται  με  το  προτεινόμενο  σύγγραμμα,καθώς  και  στις  διαφάνειες  προηγούμενων  ετών  του  κ.  Κουρκουμπέτη. 1

Page 2: ΚΕΦΑΛΑΙΟ(5:(Αλγόριθμοιpages.cs.aueb.gr/courses/epl131/files/Κ5-Αλγόριθμοι-2013.pdf · Βήματα(επίλυσης(προβλήματος Βήματα(κατά(τον(Polya

Αλγόριθμος:  Ορισμός● Ένας  αλγόριθμος  είναι  ένα  διατεταγμένο  σύνολο,  

πεπερασμένων,  σαφώς  ορισμένων,  εκτελέσιμων βημάτων,  το  οποίο  ορίζει  μία  τερματιζόμενη διαδικασία.

● Έχουμε  ήδη  δει  αλγορίθμους  για:● μετατροπής  δεκαδικής  αναπάραστασης  αριθμού  σε  δυαδική● Ανίχνευση  και  διόρθωση  σφαλμάτων● Έλεγχο  πολλών  διεργασιών  από  το  λειτουργικό  σύστημα● Τον  κύκλο  μηχανής  μιας  CPU:

2

Page 3: ΚΕΦΑΛΑΙΟ(5:(Αλγόριθμοιpages.cs.aueb.gr/courses/epl131/files/Κ5-Αλγόριθμοι-2013.pdf · Βήματα(επίλυσης(προβλήματος Βήματα(κατά(τον(Polya

Αλγόριθμος:  Ορισμός  (2)● Διατεταγμένο  (ordered)  σύνολο  βημάτων:  που  να  ξεχωρίζουν

● Όχι  απαραίτητα  να  εκτελούνται    με  τη  σειρά  (π.χ.  παράλληλοι  αλγόριθμοι  για  πολλούς  επεξεργαστές  ή  για  πολλαπλά  threads)

● Πεπερασμένα (finite)● Σαφώς  ορισμένα (unambiguous):  να  μην  είναι  αόριστα  και  να  

προκύπτουν  κατά  την  διαδικασία● Eκτελέσιμα βήματα:  π.χ.  όχι  κάτι  σαν

● το  οποίο  ορίζει  μία  τερματιζόμενη διαδικασία● Αν  και  ορίζονται  και  αλγόριθμοι  για  ατέρμονες  διεργασίες,  π.χ.  Διαίρεση  

του  1  με  το  3

3

Page 4: ΚΕΦΑΛΑΙΟ(5:(Αλγόριθμοιpages.cs.aueb.gr/courses/epl131/files/Κ5-Αλγόριθμοι-2013.pdf · Βήματα(επίλυσης(προβλήματος Βήματα(κατά(τον(Polya

Αλγόριθμοι,  προγράμματα  και  γλώσσες

− Aλγόριθμοι που  τερματίζουν  ή  δεν  τερματίζουν− πως  να  περιγράψουμε  έναν  αλγόριθμο;

− φυσική  γλώσσα  (ελληνικά,  αγγλικά)  είναι  ασαφής«μαζεύετε  τριαντάφυλλα  όσο  σας  επιτρέπεται»

− Γλώσσα  προγραμματισμού:− εύκολη  και  περιεκτική  έκφραση  αλγορίθμων− άμεσα  κατανοητή  από  υπολογιστές  και ανθρώπους

Αλγόριθμοςείσοδος έξοδος

4

Page 5: ΚΕΦΑΛΑΙΟ(5:(Αλγόριθμοιpages.cs.aueb.gr/courses/epl131/files/Κ5-Αλγόριθμοι-2013.pdf · Βήματα(επίλυσης(προβλήματος Βήματα(κατά(τον(Polya

Αλγόριθμοι  :  επίπεδα  αφαίρεσης

● Ένα  πρόβλημα  αποτελεί  το  κίνητρο  για  την  επινόηση  ενός  αλγόριθμου

● Ο  αλγόριθμος  είναι  μια  διαδικασία  επίλυσης  του  προβλήματος  αυτού– Συνήθως  μία  διαδικασία, από  πολλές  πιθανές

● Η  αναπαράσταση  είναι  η  επαρκής  περιγραφή  ενός  αλγορίθμου– μία  περιγραφή  από  πολλές  πιθανές

● Πρόγραμμα  (program):  είναι  μια  αναπαράσταση  ενός  αλγορίθμου● Η  επίσημη  αναπαράσταση,  γραμμένη  για  εκτέλεση  από  

υπόλογιστή● Διεργασία  (process):  η  διαδικασία  εκτέλεσης  ενός  

προγράμματος  (και  συνεπώς  και  του  αλγορίθμου)

5

Page 6: ΚΕΦΑΛΑΙΟ(5:(Αλγόριθμοιpages.cs.aueb.gr/courses/epl131/files/Κ5-Αλγόριθμοι-2013.pdf · Βήματα(επίλυσης(προβλήματος Βήματα(κατά(τον(Polya

Αναπαράσταση  αλγορίθμων  :  Κατασκευή  πουλιού  από  ένα  τετράγωνο  κομμάτι  χαρτί

6

Page 7: ΚΕΦΑΛΑΙΟ(5:(Αλγόριθμοιpages.cs.aueb.gr/courses/epl131/files/Κ5-Αλγόριθμοι-2013.pdf · Βήματα(επίλυσης(προβλήματος Βήματα(κατά(τον(Polya

Αρχέτυπα• Αρχέτυπα  (primitives):  Καλά  ορισμένα  σύνολα  από  δομικά  

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

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

• Κάθε  αρχέτυπο  έχει  τη  δική  του  σύνταξη  (syntax)  και  σημασιολογία  (semantics)– Σύνταξη:  συμβολική  αναπαράσταση– Σημασιολογία:  Σημασία  του  αρχέτυπου

• Τα  αρχέτυπα  είναι  σε  πιο  υψηλό  επίπεδο  από  αυτό  των  εντολών  της  γλώσσας  μηχανής  (που  είδαμε  στον  Κεφ.  2)

7

Page 8: ΚΕΦΑΛΑΙΟ(5:(Αλγόριθμοιpages.cs.aueb.gr/courses/epl131/files/Κ5-Αλγόριθμοι-2013.pdf · Βήματα(επίλυσης(προβλήματος Βήματα(κατά(τον(Polya

Αρχέτυπα  Origami

Αρχέτυπα  (primitives):  Καλά  ορισμένα  σύνολα  από  δομικά  μπλοκ  από  τα  οποία  μπορεί  να  κατασκευαστούν  αναπαραστάσεις  αλγορίθμων

8

Page 9: ΚΕΦΑΛΑΙΟ(5:(Αλγόριθμοιpages.cs.aueb.gr/courses/epl131/files/Κ5-Αλγόριθμοι-2013.pdf · Βήματα(επίλυσης(προβλήματος Βήματα(κατά(τον(Polya

Αρχέτυπα  ψευδοκώδικα● Ψευδοκώδικας  (pseudo-­‐code):   ένα  λιγότερο  επίσημο  (από  την  γλώσσα  

προγραμματισμού) σύστημα  από  συμβολισμούς  το  οποίο  μπορεί  να  αναπαραστήσει  τις  ιδέες  που  διέπουν  έναν  αλγόριθμο

● Ανάθεση:όνομα  ß έκφρασηname  ß expression

● Επιλογή  συνθήκης:  αν (συνθήκη)  τότε (ενέργεια  1)

αλλιώς (ενέργεια  2)if (συνθήκη)  then (ενέργεια  1)

else (ενέργεια  2)

9

Page 10: ΚΕΦΑΛΑΙΟ(5:(Αλγόριθμοιpages.cs.aueb.gr/courses/epl131/files/Κ5-Αλγόριθμοι-2013.pdf · Βήματα(επίλυσης(προβλήματος Βήματα(κατά(τον(Polya

Αρχέτυπα  ψευδοκώδικα  (2)● Επαναλαμβανόμενη   εκτέλεση:

όσο (συνθήκη)  κάνε (ενέργεια)while (συνθήκη)  do (ενέργεια)

● Διαδικασία   (procedure): Μπλοκ  από  εντολές   που  εκτελούν   μια  αυτόνομη  λειτουργία  

● Λέγεται   και  υπο-­‐πρόγραμμα (subprogram) υπορουτίνα(subroutine),   διαδικασία (procedure),   συνάρτηση  (function)

διαδικασία όνομα  (συγκεκριμένο  όνομα  της  μονάδας)procedure name

10

Page 11: ΚΕΦΑΛΑΙΟ(5:(Αλγόριθμοιpages.cs.aueb.gr/courses/epl131/files/Κ5-Αλγόριθμοι-2013.pdf · Βήματα(επίλυσης(προβλήματος Βήματα(κατά(τον(Polya

Διαδικασία  • Η  διαδικασία  (procedure)  πρέπει  να  είναι  γενική  και  

εφαρμόσιμη  σε  κάθε  περίπτωση– Π.χ.  η  περιγραφή  μιας  διαδικασία  για  ταξινόμηση  μιας  λίστας  ονομάτων  

κατά  αλφαβητική  σειρά  πρέπει  να  είναι  τέτοια  ώστε  να  εφαρμόζεται  σε  οποιαδήποτε  λίστα  ονομάτων  και  όχι  σε  μια  συγκεκριμένη  μόνο

• Παράμετροι  (parameters):  στην  προκειμένη  περίπτωση  η  λίστα  προς  ταξινόμηση

• Π.χ.  Procedure Sort  (List)

11

Page 12: ΚΕΦΑΛΑΙΟ(5:(Αλγόριθμοιpages.cs.aueb.gr/courses/epl131/files/Κ5-Αλγόριθμοι-2013.pdf · Βήματα(επίλυσης(προβλήματος Βήματα(κατά(τον(Polya

Παραδείγματα  στοίχισης  • Η  ανάγνωση  ψευδο-­‐κώδικα   διευκολύνεται  αν  κάνουμε  καλή  

στοίχιση  και  περιγραφή  των  βρόχων  και  του  τέλος  των  if,  while,…

12

Page 13: ΚΕΦΑΛΑΙΟ(5:(Αλγόριθμοιpages.cs.aueb.gr/courses/epl131/files/Κ5-Αλγόριθμοι-2013.pdf · Βήματα(επίλυσης(προβλήματος Βήματα(κατά(τον(Polya

Βήματα  επίλυσης  προβλήματος

Βήματα  κατά  τον  Polya (1945)1. Κατανόηση  του  προβλήματος.2. Σχηματισμός   (στο  νου  μας)  μιας  ιδέας  για  το  πώς  μπορεί  

να  λυθεί  το  πρόβλημα  από  μία  αλγοριθμική   διαδικασία.3. Συγκρότηση  του  αλγορίθμου  και  αναπαράσταση   του  ως  

πρόγραμμα.4. Αξιολόγηση  του  προγράμματος   όσον  αφορά  την  ακρίβεια  

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

Όχι  απαραίτητο   (και  πολλές  φορές  όχι  αποδοτικό)   να  τηρείταιαυστηρή  αλληλουχία   στα  βήματα  αυτά

13

Page 14: ΚΕΦΑΛΑΙΟ(5:(Αλγόριθμοιpages.cs.aueb.gr/courses/epl131/files/Κ5-Αλγόριθμοι-2013.pdf · Βήματα(επίλυσης(προβλήματος Βήματα(κατά(τον(Polya

Τεχνικές  για  “το  πρώτο  βήμα”

● Επίλυση  ενός  πιο  εύκολου,  σχετικού  προβλήματος:– «Χαλαρώνει»  κάποιους  από  τους  ασφυκτικούς  περιορισμούς  του  προβλήματος.

– Επιλύει  πρώτα  κάποια  επιμέρους  τμήματα  του  προβλήματος  -­‐ συνθετική  μεθοδολογία.

– Λέγεται  και  τεχνική  από-­‐κάτω-­‐προς-­‐τα-­‐πάνω   (bottom-­‐up)● Βηματική εκλέπτυνση  (step-­‐wise  refinement)

– Δημοφιλής  τεχνική  επειδή  παράγει  τμηματικά  προγράμματα

– Απλοποίηση  βήματων  σε  πολλά  απλούστερα– Λέγεται  και  τεχνική  από  πάνω-­‐προς-­‐τα-­‐κάτω  (top-­‐down)

14

Page 15: ΚΕΦΑΛΑΙΟ(5:(Αλγόριθμοιpages.cs.aueb.gr/courses/epl131/files/Κ5-Αλγόριθμοι-2013.pdf · Βήματα(επίλυσης(προβλήματος Βήματα(κατά(τον(Polya

Βηματική  εκλέπτυνσηΑλγόριθμος: φτιάξε  στιγμιαίο  καφέ

(1)  βράσε  νερό

(2)  βάλε  καφέστο  φλιτζάνι

(3)  πρόσθεσενερό  στο  φλιτζάνι

(1.1)  γέμισε  χύτρα (1.1.1)  βάλε  χύτρα  κάτω  από  βρύση(1.1.2)  άνοιξε  βρύση(1.1.3)  περίμενε  να  γεμίσει  η  χύτρα(1.1.4)  κλείσε  βρύση(1.2)  άναψε  το  μάτι

(1.3)  περίμενε  να  βράσει(1.3.1)  περίμενε  να  σφυρίξει  η  χύτρα(1.4)  σβήσε  το  μάτι

(2.1)  άνοιξε  το  δοχείο  του  καφέ(2.2)  πάρε  ένα  κουταλάκι  καφέ(2.3)  άδειασε  το  κουταλάκι  στο

φλιτζάνι(2.4)  κλείσε  το  δοχείο  του  καφέ  

(3.1)  βάλε  νερό  από  την  χύτρα  στο  φλιτζάνι  μέχρι  να  γεμίσει

(2.1.1)  πάρε  το  δοχείο  του  καφέ    από  το  ντουλάπι(2.1.2)  βγάλε  το  καπάκι

(2.4.1)  βάλε  το  καπάκι  στο  δοχείο(2.4.2)  βαλε  το  δοχείο  στο  ντουλάπι

15

Page 16: ΚΕΦΑΛΑΙΟ(5:(Αλγόριθμοιpages.cs.aueb.gr/courses/epl131/files/Κ5-Αλγόριθμοι-2013.pdf · Βήματα(επίλυσης(προβλήματος Βήματα(κατά(τον(Polya

Ακολουθία βημάτων  για  αλγόριθμο

1. βάλε  την  χύτρα  κάτω  από  βρύση2. άνοιξε  την  βρύση3. περίμενε  να  γεμίσει  η  χύτρα4. κλείσε  την  βρύση5. άναψε  το  μάτι6. περίμενε  να  σφυρίξει  η  χύτρα7. σβήσε  το  μάτι8. πάρε  το  δοχείο  του  καφέ  από  το  ντουλάπι9. βγάλε  το  καπάκι10. πάρε  ένα  κουταλάκι  καφέ11. άδειασε  το  κουταλάκι  στο  φλιτζάνι12. βάλε  το  καπάκι  στο  δοχείο13. βαλε  το  δοχείο  στο  ντουλάπι14. βάλε  νερό  από  την  χύτρα  στο  φλιτζάνι  μέχρι  να  γεμίσει        

εάν  δεν  υπάρχει  νερό;

εάν  δεν  υπάρχει  καφές,  να  δοκιμάσει  το  επόμενοδοχείο  καφέ;  εάν  υπάρχουν  1000  δοχεία,  πολλά  από  αυτά  άδεια,  τι  να  κάνει;

16

Page 17: ΚΕΦΑΛΑΙΟ(5:(Αλγόριθμοιpages.cs.aueb.gr/courses/epl131/files/Κ5-Αλγόριθμοι-2013.pdf · Βήματα(επίλυσης(προβλήματος Βήματα(κατά(τον(Polya

Υπόδειγμα  προβλήματος

● Το  άτομο  Α  πρέπει  να  βρει  τις  ηλικίες  των  τριών  παιδιών  του  ατόμου  Β.

● Ο  Β  λέει  στον  Α  ότι  το  γινόμενο  των  ηλικιών  των  παιδιών  του  είναι  36.

● Ο  Α  απαντάει  ότι  χρειάζεται  άλλο  ένα  στοιχείο● Ο  Β  λέει  στον  Α  το  άθροισμα  των  ηλικιών  των  παιδιών  του,  13● Ο  Α  απαντάει  ξανά  ότι  χρειάζεται  άλλο  ένα  στοιχείο● Ο  Β  λέει  στον  Α  ότι  το  μεγαλύτερο  παιδί  του  παίζει  πιάνο● Ο  Α  λέει  στον  Β  τις  ηλικίες  των  τριών  παιδιών  του.

Ποιες  είναι  οι  ηλικίες  των  τριών  παιδιών;

17

Page 18: ΚΕΦΑΛΑΙΟ(5:(Αλγόριθμοιpages.cs.aueb.gr/courses/epl131/files/Κ5-Αλγόριθμοι-2013.pdf · Βήματα(επίλυσης(προβλήματος Βήματα(κατά(τον(Polya

Υπόδειγμα  προβλήματος  (2)

Λύση

18

Page 19: ΚΕΦΑΛΑΙΟ(5:(Αλγόριθμοιpages.cs.aueb.gr/courses/epl131/files/Κ5-Αλγόριθμοι-2013.pdf · Βήματα(επίλυσης(προβλήματος Βήματα(κατά(τον(Polya

Διαγράμματα  ροής

βάλε  την  χύτρα  κάτω  από  βρύσηάνοιξε  την  βρύσηπερίμενε  να  γεμίσει  η  χύτρακλείσε  την  βρύσηάναψε  το  μάτιπερίμενε  να  σφυρίξει  η  χύτρασβήσε  το  μάτιπάρε  το  δοχείο  του  καφέ  από  το  ντουλάπι

ακολουθία

δοκιμή(test)

συνθήκη  =  true

συνθήκη  =  false

Διαγράμματα  ροής (flow charts): γραφικός  τρόπος  περιγραφής  δομής  αλγορίθμωνΟρίζουμε  τα  βασικά  συστατικά  διαγραμμάτων  ροής-­‐-­‐ ακολουθία-­‐-­‐ δοκιμή  (διάφοροι  τύποι)-­‐-­‐ επανάληψη  (διάφοροι  τύποι)

συνθήκη  =  false

19

Page 20: ΚΕΦΑΛΑΙΟ(5:(Αλγόριθμοιpages.cs.aueb.gr/courses/epl131/files/Κ5-Αλγόριθμοι-2013.pdf · Βήματα(επίλυσης(προβλήματος Βήματα(κατά(τον(Polya

Σύνθεση  βασικών  διαγραμμάτων

δοκιμή(test)

true

false

ακολουθία

ακολουθία ακολουθία

Αλγόριθμος:  σύνθεση  βασικών  διαγραμμάτων  

20

Page 21: ΚΕΦΑΛΑΙΟ(5:(Αλγόριθμοιpages.cs.aueb.gr/courses/epl131/files/Κ5-Αλγόριθμοι-2013.pdf · Βήματα(επίλυσης(προβλήματος Βήματα(κατά(τον(Polya

Η  δομή  ελέγχου  επιλογής

if condition then P1 else P2

if x>3  then z:=1  else y:=8

δοκιμήσυνθήκης

true

false

P1

if condition then P1δοκιμήσυνθήκης

true

false

P1 P2

21

Page 22: ΚΕΦΑΛΑΙΟ(5:(Αλγόριθμοιpages.cs.aueb.gr/courses/epl131/files/Κ5-Αλγόριθμοι-2013.pdf · Βήματα(επίλυσης(προβλήματος Βήματα(κατά(τον(Polya

Παράδειγμα  φωλιασμένων  επιλογών

if condition then P1 elseif condition then P3 else  P4

δοκιμήσυνθήκης

true

false

P1 P2

P2

δοκιμήσυνθήκης

true

false

P1

δοκιμήσυνθήκης

true

false

P3 P4

P2

22

Page 23: ΚΕΦΑΛΑΙΟ(5:(Αλγόριθμοιpages.cs.aueb.gr/courses/epl131/files/Κ5-Αλγόριθμοι-2013.pdf · Βήματα(επίλυσης(προβλήματος Βήματα(κατά(τον(Polya

Δομές  Επανάληψης• Βρόχος  προ-­‐ελέγχου   (pro-­‐test  loop):

όσο (συνθήκη) κάνε(σώµα βρόχου)

while (condition) do()

• Βρόχος  μετα-­‐ελέγχου (post-­‐test  loop):επανάλαβε (σώµα βρόχου)

µέχρι(συνθήκη)

repeat (loop body)until(condition)

23

Page 24: ΚΕΦΑΛΑΙΟ(5:(Αλγόριθμοιpages.cs.aueb.gr/courses/epl131/files/Κ5-Αλγόριθμοι-2013.pdf · Βήματα(επίλυσης(προβλήματος Βήματα(κατά(τον(Polya

Δομές  επανάληψης  (2)

• Υποθέτει  ότι  υπάρχει  ένα  κέρμα  στην  τσέπη  στην  αρχή

• Δεν  υποθέτει  ότι  υπάρχει  ένα  κέρμα  στην  τσέπη  στην  αρχή  (και  ελέγχει)

24

Page 25: ΚΕΦΑΛΑΙΟ(5:(Αλγόριθμοιpages.cs.aueb.gr/courses/epl131/files/Κ5-Αλγόριθμοι-2013.pdf · Βήματα(επίλυσης(προβλήματος Βήματα(κατά(τον(Polya

Η  δομή  ελέγχου  επανάληψης

Η  δομή βρόχου όσο (while)

25

Page 26: ΚΕΦΑΛΑΙΟ(5:(Αλγόριθμοιpages.cs.aueb.gr/courses/epl131/files/Κ5-Αλγόριθμοι-2013.pdf · Βήματα(επίλυσης(προβλήματος Βήματα(κατά(τον(Polya

Άλλο  παράδειγμα  δομής  επανάληψης

Η  δομή βρόχου επανέλαβε(repeat)

26

Page 27: ΚΕΦΑΛΑΙΟ(5:(Αλγόριθμοιpages.cs.aueb.gr/courses/epl131/files/Κ5-Αλγόριθμοι-2013.pdf · Βήματα(επίλυσης(προβλήματος Βήματα(κατά(τον(Polya

Στοιχεία  ελέγχου  επανάληψης  

Χρειάζεται  προσοχή  με  τον  έλεγχο  και  την  τροποποίηση!  

27

Page 28: ΚΕΦΑΛΑΙΟ(5:(Αλγόριθμοιpages.cs.aueb.gr/courses/epl131/files/Κ5-Αλγόριθμοι-2013.pdf · Βήματα(επίλυσης(προβλήματος Βήματα(κατά(τον(Polya

Επανάληψη:  Αρχέτυπα  (εντολές)  ψευδοκώδικα

● Ανάθεσηόνομα  ß έκφραση

● Επιλογή  συνθήκης  αν (συνθήκη)  τότε (ενέργεια)

● Επαναλαμβανόμενη  εκτέλεσηόσο (συνθήκη)  κάνε (ενέργεια)

● Διαδικασία  διαδικασίαόνομα  (συγκεκριμένο  όνομα  της  μονάδας)

28

Page 29: ΚΕΦΑΛΑΙΟ(5:(Αλγόριθμοιpages.cs.aueb.gr/courses/epl131/files/Κ5-Αλγόριθμοι-2013.pdf · Βήματα(επίλυσης(προβλήματος Βήματα(κατά(τον(Polya

Παράδειγμα  Διαδικασίας

διαδικασίαΧαιρετισμόςΜετρητής  ß 3;όσο (Μετρητής  >0)  κάνε(τύπωσε  το  μήνυμα  “Γεια  χαρά” καιΜετρητήςßΜετρητής-­‐1)

29

Page 30: ΚΕΦΑΛΑΙΟ(5:(Αλγόριθμοιpages.cs.aueb.gr/courses/epl131/files/Κ5-Αλγόριθμοι-2013.pdf · Βήματα(επίλυσης(προβλήματος Βήματα(κατά(τον(Polya

Ο  αλγόριθμος  της  σειριακής  αναζήτησης  (sequential  search)  σε  ψευδοκώδικα  

Αρχή:  μια  λίστα  με  ονόματα  αλφαβητικά  ταξινομημένηΣτόχος είναι  να  βρεθεί  η  ΤιμήΣτόχος  (π.χ.  Ένα  συγκεκριμένο  όνομα)  στην  Λίστα

30

Page 31: ΚΕΦΑΛΑΙΟ(5:(Αλγόριθμοιpages.cs.aueb.gr/courses/epl131/files/Κ5-Αλγόριθμοι-2013.pdf · Βήματα(επίλυσης(προβλήματος Βήματα(κατά(τον(Polya

Sequential  Search

31

Page 32: ΚΕΦΑΛΑΙΟ(5:(Αλγόριθμοιpages.cs.aueb.gr/courses/epl131/files/Κ5-Αλγόριθμοι-2013.pdf · Βήματα(επίλυσης(προβλήματος Βήματα(κατά(τον(Polya

Αλγόριθμος  Αλφαβητικής  ταξινόμησης  λίστας

)(21)1(

21)1(321 2 nnnnn −=−=−++++ !

Αριθμός  βημάτων  στην  χειρότερη  περίπτωσηγια μια  λίστα  μήκους  n

32

Αλγόριθμος  Ταξινόμησης  με  Εισαγωγή  (InsertionSort)

Page 33: ΚΕΦΑΛΑΙΟ(5:(Αλγόριθμοιpages.cs.aueb.gr/courses/epl131/files/Κ5-Αλγόριθμοι-2013.pdf · Βήματα(επίλυσης(προβλήματος Βήματα(κατά(τον(Polya

Ο  αλγόριθμος  ταξινόμησης  με  εισαγωγή  (insertion  sort) σε  ψευδοκώδικα

διαδικασία Ταξινόμηση  (Λίστα)Νß2όσο (η  τιμή  του  Ν  δεν  υπερβαίνει  το  μήκος  της  Λίστας) κάνε

(επίλεξε  την  Ν-­‐οστή καταχώρηση  της  Λίστας  ως  οριακή  καταχώρηση.Μετακίνησε  την  οριακή  καταχώριση  σε  μία  προσωρινή  θέση,  αφήνοντας  ένα  κενό  στη  Λίστα.όσο (υπάρχει  κάποιο  όνομα  επάνω  από  το  κενό,  και  το  όνομα  αυτό  

είναι  «μεγαλύτερο»  από  την  οριακή  καταχώριση)  κάνε(μετακίνησε  το  όνομα  που  βρίσκεται  επάνω  από  το  κενό  προς  τα  κάτω,  αφήνοντας  ένα  κενό  από  πάνω  του)

Τοποθέτησε  την  οριακή  καταχώριση  στο  κενό  της  Λίστας.Ν  ß Ν  +  1)

33

Page 34: ΚΕΦΑΛΑΙΟ(5:(Αλγόριθμοιpages.cs.aueb.gr/courses/epl131/files/Κ5-Αλγόριθμοι-2013.pdf · Βήματα(επίλυσης(προβλήματος Βήματα(κατά(τον(Polya

Insertion  Sort

34

Page 35: ΚΕΦΑΛΑΙΟ(5:(Αλγόριθμοιpages.cs.aueb.gr/courses/epl131/files/Κ5-Αλγόριθμοι-2013.pdf · Βήματα(επίλυσης(προβλήματος Βήματα(κατά(τον(Polya

Αναδρομή (Recursion)

• Η  εκτέλεση  μιας  διαδικασίας  οδηγεί  σε  μια  ακόμα  εκτέλεση  της  διαδικασίας.

• Πραγματοποιούνται  πολλαπλές  ενεργοποιήσεις  της  διαδικασίας,  από  τις  οποίες  όλες  εκτός  από  μία  περιμένουν  να  ολοκληρωθούν  οι  άλλες  ενεργοποιήσεις.

35

Page 36: ΚΕΦΑΛΑΙΟ(5:(Αλγόριθμοιpages.cs.aueb.gr/courses/epl131/files/Κ5-Αλγόριθμοι-2013.pdf · Βήματα(επίλυσης(προβλήματος Βήματα(κατά(τον(Polya

Αναδρομή (Recursion)  (2)Αναδρομικός (recursive) αλγόριθμος: καλεί  τον  εαυτό  τουΜεθοδολογία: εκφράζουμε  την  διαδικασία  με  βάση  ιδίου  τύπου  διαδικασίεςπου  λειτουργούν  σε  απλούστερα  προβλήματα,  Γνωρίζουμε  την  απάντηση για  το  πλέον  απλό  πρόβλημα

factorial(N)          =        1*2*3*...   (N-­‐1)*N          =        N*factorial(N-­‐1)

module factorial(N)if N=1then answer  =  1else answer  =  N  *  factorial(N-­1)

3

3  *

21

2  * 1

36

Page 37: ΚΕΦΑΛΑΙΟ(5:(Αλγόριθμοιpages.cs.aueb.gr/courses/epl131/files/Κ5-Αλγόριθμοι-2013.pdf · Βήματα(επίλυσης(προβλήματος Βήματα(κατά(τον(Polya

Αναδρομικές  διαδικασίες• Η  διαδικασία  καλεί  τον  εαυτό  της

– Κάθε  αντίτυπο  της  διαδικασίας  καλεί  τον  εαυτό  της  (με  διαφορετικές  παραμέτρους)

– Π.χ.  Η  διαδικασία  για  το  n!  (n  παραγοντικό)• Κάθε  κλήση  της  διαδικασίας  λέγεται  ενεργοποίηση  (activation)• Σε  μια  χρονική  στιγμή  μόνο  ένα  αντίτυπο  της  διαδικασίας  εκτελείται,  τα  

υπόλοιπα  (που  έχουν  κληθεί  πριν)  περιμένουν  το  αποτέλεσμα  αυτού  του  αντιτύπου

• Κάθε  αναδρομική  διεργασία  περιέχει  συνθήκη  τερματισμού  -­‐ λέγεται  περίπτωση  βάσης  (base  case)  ή  εκφυλισμένη  περίπτωση  (degenerate  case)– Αν  η  συνθήκη  δεν  ικανοποιείται,  καλείται  και  πάλι  η  διαδικασία  με  άλλες  

παραμέτρους,  που  πλησιάζουν  στην  συνθήκη  τερματισμού

37

module factorial(N)if N=1then answer  =  1else answer  =  N  *  factorial(N-­1)

Page 38: ΚΕΦΑΛΑΙΟ(5:(Αλγόριθμοιpages.cs.aueb.gr/courses/epl131/files/Κ5-Αλγόριθμοι-2013.pdf · Βήματα(επίλυσης(προβλήματος Βήματα(κατά(τον(Polya

Αναδρομική  στρατηγική  (Δυαδική  Αναζήτηση)  για  αναζήτηση  της  καταχώρισης  “Κώστας”  σε  μια  

ταξινομημένη  λίστα  

Είσοδος:  Μια  λίστα  που  είναι  ταξινομημένη  αλφαβητικά 38

Page 39: ΚΕΦΑΛΑΙΟ(5:(Αλγόριθμοιpages.cs.aueb.gr/courses/epl131/files/Κ5-Αλγόριθμοι-2013.pdf · Βήματα(επίλυσης(προβλήματος Βήματα(κατά(τον(Polya

Εφαρμογή  της  δυαδικής  αναζήτησης  για  την  καταχώριση  “Κώστας” σε  μία  ταξινομημένη  λίστα

Log2 n  =  πόσες  φορές  διαιρείται  το  n  με  το  2 nn =log2Αριθμός  βημάτων  χειρότερης  περίπτωσης

39

Page 40: ΚΕΦΑΛΑΙΟ(5:(Αλγόριθμοιpages.cs.aueb.gr/courses/epl131/files/Κ5-Αλγόριθμοι-2013.pdf · Βήματα(επίλυσης(προβλήματος Βήματα(κατά(τον(Polya

Ο  αλγόριθμος  της  δυαδικής  αναζήτησης  σε  ψευδοκώδικα

Διαδικασία Αναζήτηση  (Λίστα,  ΤιμήΣτόχος)αν (  Η  Λίστα  είναι  άδεια)τότε(Ανάφερε  ότι  η  αναζήτηση  απέτυχε)αλλιώς[Επίλεξε τη  “μεσαία” καταχώριση  της  Λίστας  ως  την  ΚαταχώρισηΠροςΈλεγχο.Εκτέλεσε  το  παρακάτω  μπλοκ  εντολών  που  αντιστοιχεί  στην  κατάλληλη  περίπτωση.

περίπτωση  1: ΤιμήΣτόχος=ΚαταχώρισηΠροςΈλεγχο(Ανέφερε  ότι  η  αναζήτηση  είναι  επιτυχής.)

περίπτωση  2: ΤιμήΣτόχος<ΚαταχώρισηΠροςΈλεγχο(Εφάρμοσε  τη  διαδικασία  Αναζήτηση  για  να  δεις  αν  η  ΤιμήΣτόχος  βρίσκεται  στο  τμήματης  λίστα  που  προηγείται  της  ΚαταχώρισηΠροςΈλεγχο,  και  ανέφερε  το  αποτέλεσμααυτής  της  αναζήτησης.)

περίπτωση3: ΤιμήΣτόχος>  ΚαταχώρισηΠροςΈλεγχο(Εφάρμοσε  τη  διαδικασία  Αναζήτηση  για  να  δεις  αν  η  ΤιμήΣτόχος  βρίσκεται  στο  τμήμα  της  λίστα  μετά  την  ΚαταχώρισηΠροςΈλεγχο,  και  ανέφερε  το  αποτέλεσμα  αυτής  της  

αναζήτησης.)

]  τέλος  αν 40

Page 41: ΚΕΦΑΛΑΙΟ(5:(Αλγόριθμοιpages.cs.aueb.gr/courses/epl131/files/Κ5-Αλγόριθμοι-2013.pdf · Βήματα(επίλυσης(προβλήματος Βήματα(κατά(τον(Polya

Ψευδοκώδικας  Δυαδικής  Αναζήτησης  

low  =  0;  high  =  N-­‐1;BinarySearch(A[0..N-­‐1],   value,  low,  high)  {            

if  (high  <  low)                      return   -­‐1  //  not  found              

mid  =  (low  +  high)    /  2            

if  (A[mid]  >  value)                      return  BinarySearch(A,  value,  low,  mid-­‐1)              

else        

if  (A[mid]  <  value)                      return  BinarySearch(A,  value,  mid+1,  high)              

else                      return  mid  //  found      

} 41

Page 42: ΚΕΦΑΛΑΙΟ(5:(Αλγόριθμοιpages.cs.aueb.gr/courses/epl131/files/Κ5-Αλγόριθμοι-2013.pdf · Βήματα(επίλυσης(προβλήματος Βήματα(κατά(τον(Polya

Ο  αλγόριθμος  της  δυαδικής  αναζήτησηςΑναζήτηση  του  Β  στην  λίστα  Α  Β  Γ  Δ  Ε  Ζ  Η

42

Page 43: ΚΕΦΑΛΑΙΟ(5:(Αλγόριθμοιpages.cs.aueb.gr/courses/epl131/files/Κ5-Αλγόριθμοι-2013.pdf · Βήματα(επίλυσης(προβλήματος Βήματα(κατά(τον(Polya

Ο  αλγόριθμος  της  δυαδικής  αναζήτησης  (2)

Αναζήτηση  του  Δ  στην  λίστα  Α  Γ  Ε  Ζ  Η

43

Page 44: ΚΕΦΑΛΑΙΟ(5:(Αλγόριθμοιpages.cs.aueb.gr/courses/epl131/files/Κ5-Αλγόριθμοι-2013.pdf · Βήματα(επίλυσης(προβλήματος Βήματα(κατά(τον(Polya

Ο  αλγόριθμος  της  δυαδικής  αναζήτησης

Αναζήτηση  του  Δ  στην  λίστα  Α  Γ  Ε  Ζ  Η

44

Page 45: ΚΕΦΑΛΑΙΟ(5:(Αλγόριθμοιpages.cs.aueb.gr/courses/epl131/files/Κ5-Αλγόριθμοι-2013.pdf · Βήματα(επίλυσης(προβλήματος Βήματα(κατά(τον(Polya

Δυαδική  Αναζήτηση  (Τερματισμός)

• Αρχικοποίηση  με  μια  ταξινομημένη  λίστα• Αν  βρεθεί  η  Τιμή-­‐Στόχος  ή  αν  προκύψει  άδεια  λίστα,  ο  αλγόριθμος  τερματίζει– Διαφορετικά,   καλείται   ένα  αντίτυπο  της  διαδικασίας  με  το  μισό  της  λίστας   (άνω  ή  κάτω  μισό)

• Σίγουρος  τερματισμός:  εφόσον  η  λίστα  είναι  πεπερασμένη  και  κάθε  φορά  η  διαδικασία  καλείται  για  το  μισό  της  λίστας  της  προηγούμενης  κλήσης,  κάποια  στιγμή  ο  αλγόριθμος  θα  τελειώσει– Θα  βρεθεί  η  Τιμή-­‐Στόχος  ή  θα  προκύψει  άδεια  λίστα  

45

Page 46: ΚΕΦΑΛΑΙΟ(5:(Αλγόριθμοιpages.cs.aueb.gr/courses/epl131/files/Κ5-Αλγόριθμοι-2013.pdf · Βήματα(επίλυσης(προβλήματος Βήματα(κατά(τον(Polya

Αποδοτικότητα  Αλγορίθμων  (Παράδειγμα)• Λίστα  30,000  ονομάτων  φοιτητών  • Ακολουθιακή  (sequential)  αναζήτηση:  κατά  μέσο  όρο  χρειάζεται  να  περάσει  15,000  ονόματα– 10msec  για  να  ελέγξει  ένα  όνομα– Μέσος  χρόνος  για  έλεγχο:  150  sec  

• Δυαδική  (binary)  αναζήτηση:  χρειάζεται  να  ελέγξει  το  πολύ  15  ονόματα  – Όσες  φορές  (το  πολύ)  μπορεί  να  κοπεί  μια  λίστα  30,000  ονομάτων  στην  μέση

– 10msec  για  να  ελέγξει  ένα  όνομα– Χρόνος  για  έλεγχο  (στη  χειρότερη  περίπτωση):  0,15  sec

46

Page 47: ΚΕΦΑΛΑΙΟ(5:(Αλγόριθμοιpages.cs.aueb.gr/courses/epl131/files/Κ5-Αλγόριθμοι-2013.pdf · Βήματα(επίλυσης(προβλήματος Βήματα(κατά(τον(Polya

Αποδοτικότητα  ● Μετράται  ως  πλήθος  των  εκτελούμενων   εντολών  του  αλγορίθμου● Συνήθως  θεωρούμε  τις  πιο  σοβαρές  (από  άποψη  υπολογιστικού   φόρτου  

ή  αποθηκευτικού   χώρου)  εντολές● Έχει  επίδραση  στο  χρόνο  ή  στον  αποθηκευτικό   χώρο  που  απαιτείται  για  

την  εκτέλεση  ενός  αλγορίθμου● Ενδιαφερόμαστε   για  μια  γενική  μορφή  που  να  δείχνει  την  απόδοση  για  

μια  λίστα  οποιουδήποτε  μήκους  n● Καλύτερη  (best-­‐case),  χειρότερη (worst-­‐case) και  μέση  (average-­‐case)  

περίπτωση.● π.χ.  Είδαμε  την  μέση  περίπτωση  για  την  ακολουθιακή  αναζήτηση:  n/2 έλεγχοι

για  λίστα  μήκους  n και  ● χειρότερη  περίπτωση  log  (n)  για  την  δυαδική  αναζήτηση για  λίστα  μήκους  n

● Ο  συμβολισμός  με  Θ  προσδιορίζει   την  αποδοτικότητα   των  αλγορίθμων– Παράδειγμα  η  ταξινόμηση  με  εισαγωγή  αναπαριστάται  με  Θ(n2)– Θ:  σύμβολο  Landau

47

Page 48: ΚΕΦΑΛΑΙΟ(5:(Αλγόριθμοιpages.cs.aueb.gr/courses/epl131/files/Κ5-Αλγόριθμοι-2013.pdf · Βήματα(επίλυσης(προβλήματος Βήματα(κατά(τον(Polya

Ανάλυση  αλγορίθμου  ταξινόμησης  με  εισαγωγή• Επικεντρωνόμαστε   στο  πόσες  συγκρίσεις  χρειάζονται   στον  

αλγόριθμο– Επιλογή  μιας  καταχώρησης  σαν  οριακή  καταχώρηση   (pivot):  

2,3,...n– Σύγκριση  του  pivot  με  όλα  τα προηγούμενα  στοιχεία  

• Καλύτερη  περίπτωση:  Η  λίστα  είναι  ταξινομημένη  ήδη  αλφαβητικά– Οπότε  χρειάζεται  σύγκριση   του  pivot  με  ένα  στοιχείο κάθε  φορά– n-­‐1  συγκρίσεις

• Χειρότερη  περίπτωση:  Η  λίστα   είναι  σε  ανάποδη  αλφαβητική  σειρά– Χρειάζεται  σύγκριση   του  pivot  (που  είναι  σε  μια  θέση  k)  με  όλα  τα  

προηγούμενα  στοιχεία  1,2,...k-­‐1– Συνολικά  1+2+3+...+  (n-­‐1)  συγκρίσεις   =  (1/2)*(n2-­‐n)  συγκρίσεις

• Μέση  περίπτωση:   (1/4)*(n2-­‐1)   συγκρίσεις48

Page 49: ΚΕΦΑΛΑΙΟ(5:(Αλγόριθμοιpages.cs.aueb.gr/courses/epl131/files/Κ5-Αλγόριθμοι-2013.pdf · Βήματα(επίλυσης(προβλήματος Βήματα(κατά(τον(Polya

Σενάριο  χειρότερης  περίπτωσης  για  την  ταξινόμηση  με  εισαγωγή  

Χειρότερη  περίπτωση:  Η  λίστα  είναι  σε  ανάποδη  αλφαβητική  σειράΧρειάζεται  σύγκριση  του  pivot  (που  είναι  σε  μια  θέση  k)  με  όλα  τα  προηγούμενα  στοιχεία  1,2,...k-­‐1Συνολικά  1+2+3+...+  (n-­‐1)  συγκρίσεις  =  (1/2)*(n2-­‐n)  συγκρίσεις

49

Page 50: ΚΕΦΑΛΑΙΟ(5:(Αλγόριθμοιpages.cs.aueb.gr/courses/epl131/files/Κ5-Αλγόριθμοι-2013.pdf · Βήματα(επίλυσης(προβλήματος Βήματα(κατά(τον(Polya

Ορισμός  ταχύτητας  αύξησης  μιας  συνάρτησης:  Σύμβολα  Landau

φράγμα  άνω  όασυμπτωτικ      την  έχει      :))(()( gfngOnf ∈

kngnfn ⋅≤∞→ )()(    ,  όταν

φράγμα  κάτω  και  άνω  όασυμπτωτικ      την  έχει      :))(()( gfngnf Θ∈

21 )()()(    ,  όταν kngnfkngn ⋅≤≤⋅∞→

)log(510log2),(5102 22 nnnnnnnn Θ∈−+Θ∈−+

η  f “αυξάνεται” το  πολύ  όπως  η  g

η  f “αυξάνεται” σαν  τη  g, άρα  είναι  στην  οικογένεια  Θ(g)

50

Page 51: ΚΕΦΑΛΑΙΟ(5:(Αλγόριθμοιpages.cs.aueb.gr/courses/epl131/files/Κ5-Αλγόριθμοι-2013.pdf · Βήματα(επίλυσης(προβλήματος Βήματα(κατά(τον(Polya

Γράφημα  της  ανάλυσης  χειρότερης  περίπτωσης  του  αλγορίθμου  ταξινόμησης  με  εισαγωγή

f(n)  =  (1/2)*(n2-­‐n)

n

Ο  αλγόριθμος   ταξινόμησης  με  εισαγωγή  ανήκει  στην  κλάση  αλγορίθμων Θ(n2)  51

Page 52: ΚΕΦΑΛΑΙΟ(5:(Αλγόριθμοιpages.cs.aueb.gr/courses/epl131/files/Κ5-Αλγόριθμοι-2013.pdf · Βήματα(επίλυσης(προβλήματος Βήματα(κατά(τον(Polya

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

f(n)  =  ln(n)    

n

Ο  αλγόριθμος  δυαδικής  αναζήτησης  ανήκει  στην  κλάση  αλγορίθμων  O  (logn)  =  O(ln n)   52

Αύξηση  χρόνου  με  όλο  Και  μικρότερα  βήματα

Page 53: ΚΕΦΑΛΑΙΟ(5:(Αλγόριθμοιpages.cs.aueb.gr/courses/epl131/files/Κ5-Αλγόριθμοι-2013.pdf · Βήματα(επίλυσης(προβλήματος Βήματα(κατά(τον(Polya

Επαλήθευση  λογισμικού

● Απόδειξη  ορθότητας  αλγορίθμου– Ισχυρισμοί  (assertions)

●Προσυνθήκες (preconditions):  ισχύουν  πριν  ξεκινήσει   ο  αλγόριθμος

●Αμετάβλητοι  βρόχοι (loop  invariant):  ισχυρισμοί  που  είναι  σωστοί  κάθε  φορά  που  φτάνουμε  σε  ένα  σημείο  του  βρόχου

● Έλεγχοι  και  συνδυαστικοί  έλεγχοι

53

Page 54: ΚΕΦΑΛΑΙΟ(5:(Αλγόριθμοιpages.cs.aueb.gr/courses/epl131/files/Κ5-Αλγόριθμοι-2013.pdf · Βήματα(επίλυσης(προβλήματος Βήματα(κατά(τον(Polya

Παράδειγμα  προβλήματος:  Διαχωρισμός  αλυσίδας

● Ένας  ταξιδιώτης  έχει  μία  χρυσή  αλυσίδα  εφτά  κρίκων.● Πρέπει  να  μείνει  σε  ένα  απομονωμένο   ξενοδοχείο  για  

επτά  νύχτες.● Το  ενοίκιο  για  κάθε  νύχτα  είναι  ένας  κρίκος  από  την  

αλυσίδα  του.● Ποιος  είναι  ο  μικρότερος   αριθμός  κρίκων  που  πρέπει  να  

κοπούν  ώστε  ο  ταξιδιώτης   να  πληρώνει  στο  ξενοδοχείο  έναν  κρίκο  από  την  αλυσίδα  κάθε  πρωί  χωρίς  να  καταβάλει   προκαταβολικά   τη  διαμονή  του;

54

Page 55: ΚΕΦΑΛΑΙΟ(5:(Αλγόριθμοιpages.cs.aueb.gr/courses/epl131/files/Κ5-Αλγόριθμοι-2013.pdf · Βήματα(επίλυσης(προβλήματος Βήματα(κατά(τον(Polya

Λύση  1:  Διαχωρισμός  της  αλυσίδας  με  τρία  μόνο  κοψίματα

55

Page 56: ΚΕΦΑΛΑΙΟ(5:(Αλγόριθμοιpages.cs.aueb.gr/courses/epl131/files/Κ5-Αλγόριθμοι-2013.pdf · Βήματα(επίλυσης(προβλήματος Βήματα(κατά(τον(Polya

Διαχωρισμός  της  αλυσίδας  με  μόνο  ένα  κόψιμο :  Καλύτερη  λύση

56