Καλημέρα
Το βασικό ερώτημα είναι αυτό που έθεσε ο Σέργιος. Σε τι διαφέρει η πληροφορική από τις άλλες επιστήμες και ο μαθηματικός δεν βαθμολογεί την ποιότητα της λύσης ενώ ο πληροφορικός πρέπει να το κάνει; Θα προσπαθήσω να σταθώ σε αυτό.
Το βασικό ζητούμενο στα μαθηματικά, τη φυσική και την πληροφορική είναι η επίλυση προβλημάτων. Η φυσική και τα μαθηματικά δίνουν αλγεβρικές λύσεις στα προβλήματα. Υπάρχουν όμως και μερικά προβλήματα που δεν επιδέχονται αλγεβρικές λύσεις. Πχ στο πρόβλημα «Να βρεθούν όλοι οι πρώτοι αριθμοί» δεν υπάρχει αλγεβρική λύση.
Αναγκαζόμαστε λοιπόν σε κάποια προβλήματα που η αλγεβρική προσέγγιση είναι ανεπαρκής, να επιτεθούμε με άλλο τρόπο. Αυτός ο τρόπος είναι η διαδικασία πεπερασμένων βημάτων δηλαδή ο αλγόριθμος. Το ζητούμενο σε μια αλγεβρική λύση είναι το αποτέλεσμα. Το ζητούμενο στην αλγοριθμική λύση δεν είναι το αποτέλεσμα. Είναι η διαδικασία που θα μας δώσει αποτέλεσμα. Πχ όταν το πρόβλημα είναι η εύρεση μεγίστου σε ένα πίνακα αυτό που γράφουμε ως αλγοριθμική λύση δεν είναι το μέγιστο στοιχείο. Είναι η διαδικασία με την οποία θα βρούμε το μέγιστο στοιχείο.
Εδώ λοιπόν αρχίζει το πράγμα να διαφοροποιείται. Από τη στιγμή που στην αλγοριθμική επίλυση προβλημάτων είναι το κεντρικό θέμα είναι τα βήματα που πρέπει να ακολουθήσουμε, είναι αρκετά λογικό το μας ενδιαφέρει το πόσα είναι αυτά τα βήματα.
Αυτό δε γίνεται καθόλου τυχαία. Οι διαφορές μεταξύ καλού αλγόριθμου και κακού αλγόριθμου είναι τεράστιες. Ας πάρουμε για παράδειγμα την αναζήτηση σε μια λίστα που αποτελείται από 2^120 στοιχεία. Τον αριθμό αυτό δεν τον επέλεξα τυχαία. Είναι μεγαλύτερος από το μήκος του γνωστού σύμπαντος μετρημένο σε χιλιοστά του μέτρου!!!
Μια σειριακή αναζήτηση θα ήθελε 2^120 ελέγχους στοιχείων για να πραγματοποιηθεί. Η δυαδική αναζήτηση το κάνει σε 120 τέτοιους ελέγχους!!!
Ας πάμε σε ασύγκριτα μικρότερους αριθμούς όπως είναι ο 2^33 = 8.589.934.592 (8 δις και βάλε) που είναι πάνω από τον πληθυσμό της γης. Μια σειριακή αναζήτηση σε μια λίστα όλων των κατοίκων της γης θα ήθελε δισεκατομμύρια ελέγχους. Μια δυαδική αναζήτηση θα ήθελε 33 μόνο.
Μιλάμε για κολοσσιαίες διαφορές. Η πληροφορική αν θέλει να λέγεται επιστήμη έπρεπε να βρει τρόπους να αξιολογεί αυτές τις διαφορές. Έτσι θεμελιώθηκαν οι έννοιες της πολυπλοκότητας και της τάξης. Η σειριακή αναζήτηση λοιπόν έχει γραμμική τάξη και η δυαδική αναζήτηση έχει λογαριθμική. Η δυαδική αναζήτηση διαφέρει από τη σειριακή όσο ο logν διαφέρει από το ν. Και η διαφορά δυαδικής-σειριακής είναι διαφορετική από τη διαφορά εύρεσης μεγίστου με μια σάρωση (ν) και με ταξινόμηση φυσαλίδας (ν^2).
Στα μαθηματικά και τη φυσική οι λύσεις είναι αλγεβρικές. 2 αλγεβρικές λύσεις όσο και να διαφέρουν ως προς την κομψότητα/ποιότητα δεν φτάνουν τέτοιες διαφορές. Είτε βρεις το ολοκλήρωμα της χ^2 από το 1 μέχρι το 10 είτε το βρεις από το 1 μέχρι το 10.000.000 είναι το ίδιο πράγμα σε χώρο και κόπο γιατί η λύση είναι αλγεβρική και ο ίδιος τύπος χρησιμοποιείται αλλά με άλλα νούμερα. Έτσι σωστά δεν απασχολεί αυτό τους μαθηματικούς. Αν όμως κάνεις ταξινόμηση σε 10 στοιχεία είναι πολύ διαφορετικό από το να κάνεις ταξινόμηση σε 10.000.000. Τα στοιχεία αυτά θα αποτελέσουν την είσοδο του αλγορίθμου. Το ένα θέλει περίπου 50 ελέγχους ενώ το άλλο περίπου 50.000.000.000.000. Είναι υποχρεωμένοι οι πληροφορικοί να απασχολούνται με αυτό. Οι αλγοριθμικές μέθοδοι εξαρτώνται καθοριστικά (και απαγορευτικά) από το πλήθος των στοιχείων εισόδου.
Η διαφορά λοιπόν δεν είναι στο ότι εμείς σαν πληροφορικοί νομίζουμε ότι είμαστε κάτι το διαφορετικό (κάτι ανώτερο ίσως) από τους άλλους. Η διαφορά είναι μεταξύ αλγεβρικών και αλγοριθμικών μεθόδων.
Αυτά όσον αφορά την πληροφορική και τις άλλες επιστήμες.
Τώρα σχετικά με το μάθημα.
Για μένα πρέπει να βλέπουμε το μάθημα ως τμήμα της ευρύτερης επιστήμης της πληροφορικής. Έτσι αν και το θεματολόγιο πρέπει να είναι απλούστερο, θα πρέπει οπωσδήποτε να έχουμε κοινές αρχές με τα πανεπιστημιακά τμήματα. Δεν μπορεί κοινά αποδεκτά πράγματα σε πανεπιστημιακό επίπεδο εμείς να μην τα λαμβάνουμε υπόψη και να έχουμε δικές μας αρχές. Θέλω η παιδεία να έχει συνέχεια. Αλλιώς μόλις μπουν τα παιδιά στα πανεπιστήμια θα πετάξει ο καθηγητής εκεί τη γνωστή ατάκα «ξεχάστε ότι μάθατε στο σχολείο, τώρα θα τα μάθετε σωστά», πράγμα που θα απαξιώσει τελείως (και δίκαια) το δικό μας έργο στη δευτεροβάθμια.
Δε λέω να κόβουμε πόντους σε όλους τους μη βέλτιστους αλγόριθμους. Αλλά ο μαθητής που κάνει την αναζήτηση με «Για» δείχνει καθαρά ότι θέλει να αποφύγει την «Όσο». Το βιβλίο μας καλύπτει απόλυτα να κόψουμε πόντους σε αυτό γιατί στην αρχή του κεφαλαίο 8, στους διδακτικούς στόχους λέει: «Να επιλέγει την καλύτερη δομή επανάληψης
». Επίσης στο κεφάλαιο της σειριακής αναζήτησης η σάρωση γίνεται με «Όσο» και λέει παρακάτω: «[
] αν τα στοιχεία του πίνακα είναι ταξινομημένα, τότε ο αλγόριθμος πρέπει να σταματήσει, μόλις συναντήσει κάποιο στοιχείο που είναι μεγαλύτερο από το αναζητούμενο».
Ξεκάθαρα λοιπόν μας δείχνει το διδακτικό πακέτο ποιο είναι το σωστό και ποιο είναι το λάθος. Η αυθαιρεσία στην ερμηνεία του ΔΠ είναι το να μην κόβεις πόντους, όχι το να κόβεις!!! Και ξέρουμε ότι στο συγκεκριμένο αλγόριθμο δεν αλλάζει η αλγοριθμική τάξη. Στην περίπτωση που κάνεις ταξινόμηση για εύρεση μεγίστου κάνεις κάτι πολύ πιο χοντρό: Αλλάζεις την αλγοριθμική τάξη. Τι λέτε λοιπόν να έγραφε το βιβλίο για το συγκεκριμένο τρόπο; (αν ποτέ φανταζόταν οι συγγραφείς ότι θα βλέπαμε και τέτοιες λύσεις).
Νομίζω μως εμείς είμαστε αυτοί που αυθαίρετα έχουμε νομιμοποιήσει τις κακές λύσεις και όχι το βιβλίο μας, ούτε η επιστήμης μας.