Ανάλυση προβλήματος
Κεφ. 1 · Πρόβλημα, κατηγορίες, κατανόηση, δομή, απαιτήσεις
Ο διευθυντής του σχολείου σου λέει: «Φτιάξε μου κάτι για τις απουσίες». Τι ακριβώς θέλει; Να μετράει απουσίες; Να ειδοποιεί τους γονείς; Να βγάζει στατιστικά;
Πριν γράψεις έστω και μία γραμμή κώδικα, πρέπει να καταλάβεις το πρόβλημα. Αυτό είναι το πρώτο κεφάλαιο της ύλης — και το πιο συχνό Θέμα Α με ερωτήσεις «Σωστό/Λάθος» και ορισμούς.
Η έννοια του προβλήματος
Με τον όρο πρόβλημα εννοούμε μια κατάσταση που χρειάζεται αντιμετώπιση, απαιτεί λύση, και η λύση της δεν είναι γνωστή ούτε προφανής.
Προβλήματα δεν είναι μόνο τα μαθηματικά: ο προγραμματισμός των δρομολογίων ενός λεωφορείου, η κατάρτιση ενός ωρολογίου προγράμματος ή η διαχείριση ενός βιβλιοπωλείου είναι επίσης προβλήματα.
Η αντιμετώπιση ενός προβλήματος περνά από την κατανόηση, την ανάλυση και την επίλυσή του. Για πολλά προβλήματα η επίλυση γίνεται με τη βοήθεια υπολογιστή — τότε μιλάμε για υπολογιστικά προβλήματα.
Κατηγορίες προβλημάτων
Ως προς τη δυνατότητα επίλυσης:
- Επιλύσιμα: η λύση τους έχει βρεθεί και διατυπωθεί (π.χ. η επίλυση της δευτεροβάθμιας εξίσωσης).
- Ανοικτά: δεν έχει βρεθεί λύση, αλλά ούτε έχει αποδειχθεί ότι δεν υπάρχει.
- Άλυτα: έχει αποδειχθεί ότι δεν επιδέχονται λύση.
Ως προς τη δομή τους:
- Δομημένα: η λύση τους προκύπτει από μια σαφή, αυτοματοποιημένη διαδικασία (π.χ. ο υπολογισμός του Ε.Κ.Π.).
- Ημιδομημένα: η λύση βασίζεται και σε εκτιμήσεις ή στατιστικά στοιχεία.
- Αδόμητα: η λύση βασίζεται κυρίως στη διαίσθηση και την εμπειρία (π.χ. ποιο αυτοκίνητο να αγοράσω).
Ως προς το είδος της ζητούμενης λύσης:
- Απόφασης: η απάντηση είναι «ναι» ή «όχι» (π.χ. είναι ο αριθμός πρώτος;).
- Υπολογιστικά: ζητείται ο υπολογισμός ενός αποτελέσματος.
- Βελτιστοποίησης: ζητείται η καλύτερη λύση ανάμεσα σε πολλές (π.χ. η συντομότερη διαδρομή).
Το πρόβλημα «Βρες τη συντομότερη διαδρομή από την Αθήνα στη Θεσσαλονίκη που περνά από τη Λαμία» ως προς το είδος της λύσης είναι:
Κατανόηση προβλήματος
Η κατανόηση ενός προβλήματος εξαρτάται από δύο παράγοντες:
- τη σωστή διατύπωση από αυτόν που το θέτει και
- την ικανότητα αντίληψης από αυτόν που καλείται να το λύσει.
Για να κατανοήσεις ένα πρόβλημα πρέπει να εντοπίσεις με σαφήνεια τα δεδομένα (τι γνωρίζεις), τα ζητούμενα (τι πρέπει να βρεις) και το περιβάλλον του — τον χώρο στον οποίο ανήκει και τους περιορισμούς του. Μια ασαφής διατύπωση, όπως «φτιάξε κάτι για τις απουσίες», οδηγεί σε λάθος λύση ακόμη κι αν ο κώδικας είναι τέλειος.
Δομή προβλήματος
Τα σύνθετα προβλήματα λύνονται πιο εύκολα αν τα αναλύσουμε σε απλούστερα υποπροβλήματα, κάθε ένα από τα οποία αναλύεται ξανά μέχρι να φτάσουμε σε προβλήματα που λύνονται άμεσα. Αυτή είναι η ανάλυση από πάνω προς τα κάτω (top-down).
Η δομή αυτή μπορεί να περιγραφεί:
- με φυσική γλώσσα, σε αριθμημένα επίπεδα (1, 1.1, 1.2, …) ή
- διαγραμματικά, με ένα δενδροειδές διάγραμμα: στην κορυφή το αρχικό πρόβλημα, από κάτω τα υποπροβλήματα.
Η ανάλυση αποκαλύπτει τη δομή του προβλήματος: ποια κομμάτια το αποτελούν και πώς συνδέονται.
Καθορισμός απαιτήσεων
Ο καθορισμός των απαιτήσεων ενός προβλήματος σημαίνει να προσδιορίσεις με ακρίβεια:
- τα δεδομένα — ποια είναι, από πού προέρχονται, τι τιμές παίρνουν
- τα ζητούμενα — τι ακριβώς πρέπει να προκύψει
- τη σχέση ανάμεσα σε δεδομένα και ζητούμενα (την επεξεργασία)
Δεδομένα και πληροφορίες δεν είναι το ίδιο: τα δεδομένα είναι οι «ακατέργαστες» τιμές, ενώ η πληροφορία προκύπτει από την επεξεργασία των δεδομένων. Ο βαθμός κάθε μαθητή είναι δεδομένο· ο μέσος όρος της τάξης είναι πληροφορία.
Ποιος από τους παρακάτω δεν είναι παράγοντας από τον οποίο εξαρτάται η κατανόηση ενός προβλήματος κατά το σχολικό βιβλίο;
Μέθοδος: ανάλυση προβλήματος σε άσκηση
- Γράψε με μία πρόταση τι ζητείται.
- Κατάγραψε τα δεδομένα και από πού προέρχονται (πληκτρολόγιο, αρχείο, αισθητήρας).
- Κατάγραψε τα ζητούμενα (αποτελέσματα, μηνύματα).
- Ανάλυσε το πρόβλημα σε υποπροβλήματα (1, 1.1, 1.2, …) μέχρι κάθε κομμάτι να λύνεται άμεσα.
- Σχεδίασε το διάγραμμα (δένδρο) αν σου ζητηθεί.
- Κατάταξε το πρόβλημα στις τρεις κατηγοριοποιήσεις (επίλυση, δομή, είδος λύσης).
Παράδειγμα 1: Κατάταξε τα παρακάτω προβλήματα ως προς τη δυνατότητα επίλυσης: (α) η επίλυση της εξίσωσης , (β) ο τετραγωνισμός του κύκλου με κανόνα και διαβήτη, (γ) η εικασία του Goldbach.
Λύση:
- (α) Επιλύσιμο — η λύση είναι γνωστή και διατυπωμένη.
- (β) Άλυτο — έχει αποδειχθεί (1882) ότι είναι αδύνατο.
- (γ) Ανοικτό — ούτε λύση έχει βρεθεί ούτε αδυναμία έχει αποδειχθεί.
Παράδειγμα 2: Ανάλυσε σε υποπροβλήματα το πρόβλημα «Έκδοση ελέγχου προόδου μαθητή».
Λύση (φυσική γλώσσα, κατά επίπεδα):
- 1 Έκδοση ελέγχου προόδου
- 1.1 Συλλογή δεδομένων (στοιχεία μαθητή, βαθμοί, απουσίες)
- 1.2 Επεξεργασία
- 1.2.1 Υπολογισμός μέσου όρου
- 1.2.2 Έλεγχος ορίου απουσιών
- 1.3 Εκτύπωση ελέγχου
Σε διάγραμμα, το 1 είναι η ρίζα, τα 1.1–1.3 τα παιδιά της και τα 1.2.1–1.2.2 τα παιδιά του 1.2.
Θέμα τύπου Πανελλαδικών: Να χαρακτηρίσετε ως Σωστή ή Λάθος κάθε πρόταση.
- Η λύση ενός προβλήματος είναι πάντα γνωστή εκ των προτέρων.
- Ένα πρόβλημα απόφασης απαιτεί απάντηση «ναι» ή «όχι».
- Τα αδόμητα προβλήματα λύνονται με αυτοματοποιημένη διαδικασία.
- Ανοικτό λέγεται το πρόβλημα για το οποίο έχει αποδειχθεί ότι δεν έχει λύση.
- Η πληροφορία προκύπτει από την επεξεργασία δεδομένων.
Λύση: 1. Λάθος (ένα πρόβλημα έχει λύση που δεν είναι γνωστή ούτε προφανής) · 2. Σωστό · 3. Λάθος (αυτό ισχύει για τα δομημένα) · 4. Λάθος (αυτό είναι το άλυτο) · 5. Σωστό.
Ένα πρόβλημα για το οποίο έχει αποδειχθεί ότι δεν επιδέχεται λύση χαρακτηρίζεται:
Το πρόβλημα του τετραγωνισμού του κύκλου απασχόλησε τους μαθηματικούς από την αρχαία Ελλάδα και κατατάχθηκε οριστικά στα άλυτα μόλις το 1882, όταν ο Ferdinand von Lindemann απέδειξε ότι ο αριθμός είναι υπερβατικός.
Η απόφαση «Ποιο πανεπιστημιακό τμήμα να δηλώσω πρώτο στο μηχανογραφικό;» είναι κυρίως πρόβλημα:
Τρεις ερωτήσεις, τρεις κατηγοριοποιήσεις: «Λύνεται;» → επιλύσιμο / ανοικτό / άλυτο «Πόσο οργανωμένη είναι η λύση;» → δομημένο / ημιδομημένο / αδόμητο «Τι απάντηση θέλω;» → ναι-όχι (απόφασης) / αριθμό (υπολογιστικό) / την καλύτερη (βελτιστοποίησης)
«Να ελέγξεις αν ένα Sudoku έχει λυθεί σωστά» και «Να λύσεις ένα Sudoku με τα λιγότερα δυνατά βήματα». Κατάταξε και τα δύο ως προς το είδος της ζητούμενης λύσης και εξήγησε τη διαφορά.
Δοκίμασε πρώτα μόνος σου — μετά δες τη λύση
Το πρώτο είναι πρόβλημα απόφασης: η απάντηση είναι «ναι, είναι σωστό» ή «όχι». Το δεύτερο είναι πρόβλημα βελτιστοποίησης: υπάρχουν πολλοί τρόποι να λυθεί και ζητείται ο καλύτερος (με τα λιγότερα βήματα). Το ίδιο αντικείμενο (Sudoku) δίνει διαφορετικό είδος προβλήματος ανάλογα με το τι ζητάμε.
- Σύγχυση ανοικτού και άλυτου. Άλυτο = αποδεδειγμένα χωρίς λύση· ανοικτό = δεν ξέρουμε ακόμη.
- Σύγχυση δεδομένων με πληροφορία. Η πληροφορία είναι το αποτέλεσμα της επεξεργασίας.
- Ανάλυση που σταματά πολύ νωρίς: κάθε υποπρόβλημα πρέπει να είναι αρκετά απλό ώστε να λύνεται άμεσα.
- Πρόβλημα: κατάσταση που απαιτεί λύση μη γνωστή και μη προφανή.
- Κατηγορίες: επιλύσιμα / ανοικτά / άλυτα · δομημένα / ημιδομημένα / αδόμητα · απόφασης / υπολογιστικά / βελτιστοποίησης.
- Κατανόηση = σωστή διατύπωση + ικανότητα αντίληψης· εντοπισμός δεδομένων και ζητούμενων.
- Δομή: ανάλυση από πάνω προς τα κάτω σε υποπροβλήματα, με φυσική γλώσσα ή διάγραμμα.
- Δεδομένα → επεξεργασία → πληροφορία.