Professional Documents
Culture Documents
ΠΑΚΕΤΟ 6 Πληρ. Χωρίς Η.Υ. - CompThink - Πολυπλοκ. Υλικό Αναφοράς
ΠΑΚΕΤΟ 6 Πληρ. Χωρίς Η.Υ. - CompThink - Πολυπλοκ. Υλικό Αναφοράς
στη
διδακτική πράξη
ΕΠΙΜΟΡΦΩΤΙΚΟ ΥΛΙΚΟ
Έκδοση 1η
Ιούλιος 2022
Πράξη: ΕΠΙΜΟΡΦΩΣΗ ΕΚΠΑΙΔΕΥΤΙΚΩΝ ΓΙΑ ΤΗΝ ΑΞΙΟΠΟΙΗΣΗ ΚΑΙ
ΕΦΑΡΜΟΓΗ ΤΩΝ ΨΗΦΙΑΚΩΝ ΤΕΧΝΟΛΟΓΙΩΝ ΣΤΗ ΔΙΔΑΚΤΙΚΗ
ΠΡΑΞΗ (ΕΠΙΜΟΡΦΩΣΗ Β’ ΕΠΙΠΕΔΟΥ ΤΠΕ)/ Β’ Κύκλος
Συμπράττων
φορέας:
ΠΑΚΕΤΟ 6: Πληροφορική χωρίς Η.Υ. - Πολυπλοκότητα Αλγορίθμων
Επιμορφωτικό Υλικό
ΠΕΡΙΕΧΟΜΕΝΑ
Προοίμιο ……………………………………………………………………………………………………………………………….4
1. Προοίμιο .................................................................................................................... 4
2.1 Δυαδικό σύστημα .................................................................................................. 9
2.2 Ψηφιοποίηση και κωδικοποίηση ............................................................................... 9
2.3 Κείμενα και η κωδικοποίησή τους ............................................................................10
2.3.1 Κώδικας ASCII και UNICODE............................................................................10
2.4 Εικόνες και η κωδικοποίησή τους ............................................................................12
2.5 Ήχοι και η κωδικοποίησή τους ................................................................................13
2.6 Κρυπτογράφηση και συμπίεση ................................................................................13
2.6.1 Κρυπτογράφηση .............................................................................................13
2.6.2 Συμπίεση .......................................................................................................14
2.7 Ζωγραφίζοντας χάρτες: ένα διδακτικό σενάριο .........................................................15
2.7.1 ΤΙΤΛΟΣ ΔΙΔΑΚΤΙΚΟΥ ΣΕΝΑΡΙΟΥ .......................................................................15
2.7.2 ΕΚΤΙΜΩΜΕΝΗ ΔΙΑΡΚΕΙΑ ΔΙΔΑΚΤΙΚΟΥ ΣΕΝΑΡΙΟΥ ................................................15
2.7.3 ΕΝΤΑΞΗ ΤΟΥ ΔΙΔΑΚΤΙΚΟΥ ΣΕΝΑΡΙΟΥ ΣΤΟ ΠΡΟΓΡΑΜΜΑ ΣΠΟΥΔΩΝ &
ΠΡΟΑΠΑΙΤΟΥΜΕΝΕΣ ΓΝΩΣΕΙΣ ......................................................................................15
2.7.4 ΣΚΟΠΟΙ ΚΑΙ ΣΤΟΧΟΙ ΤΟΥ ΔΙΔΑΚΤΙΚΟΥ ΣΕΝΑΡΙΟΥ ..............................................15
2.7.5 ΣΥΝΟΠΤΙΚΗ ΠΕΡΙΓΡΑΦΗ ΤΟΥ ΔΙΔΑΚΤΙΚΟΥ ΣΕΝΑΡΙΟΥ .........................................15
2.7.6 ΕΠΙΣΤΗΜΟΛΟΓΙΚΗ ΠΡΟΣΕΓΓΙΣΗ ΚΑΙ ΕΝΝΟΙΟΛΟΓΙΚΗ ΑΝΑΛΥΣΗ – ΘΕΜΑΤΑ ΘΕΩΡΙΑΣ
ΤΟΥ ΔΙΔΑΚΤΙΚΟΥ ΣΕΝΑΡΙΟΥ ........................................................................................16
2.7.7 ΕΠΕΚΤΑΣΕΙΣ/ΔΙΑΣΥΝΔΕΣΕΙΣ ΤΩΝ ΕΝΝΟΙΩΝ ......................................................16
2.7.8 ΠΟΛΛΑΠΛΕΣ ΑΝΑΠΑΡΑΣΤΑΣΕΙΣ – ΠΟΛΛΑΠΛΕΣ ΠΡΟΣΕΓΓΙΣΕΙΣ ............................16
2.7.9 ΠΡΟΒΛΕΨΗ ΔΥΣΚΟΛΙΩΝ ΣΤΟ ΔΙΔΑΚΤΙΚΟ ΣΕΝΑΡΙΟ ............................................16
2.7.10 ΓΙΑΤΙ ΧΡΗΣΙΜΟΠΟΙΕΙΤΑΙ Ο Η.Υ. .......................................................................17
2.7.11 ΔΙΔΑΚΤΙΚΟΣ ΘΟΡΥΒΟΣ ...................................................................................17
2.7.12 ΧΡΗΣΗ ΕΞΩΤΕΡΙΚΩΝ ΠΗΓΩΝ ...........................................................................17
2.7.13 ΥΠΟΚΕΙΜΕΝΗ ΘΕΩΡΙΑ ΜΑΘΗΣΗΣ .....................................................................17
2.7.14 ΕΠΙΣΗΜΑΝΣΗ ΜΙΚΡΟΜΕΤΑΒΟΛΩΝ ΣΤΗΝ ΟΡΓΑΝΩΣΗ ΤΟΥ ΜΑΘΗΜΑΤΟΣ ΚΑΙ ΣΤΟ
ΝΟΗΜΑ ΤΩΝ ΕΝΝΟΙΩΝ ...............................................................................................17
2.7.15 ΔΙΔΑΚΤΙΚΟ ΣΥΜΒΟΛΑΙΟ .................................................................................17
2.7.16 ΟΡΓΑΝΩΣΗ ΤΑΞΗΣ – ΕΦΙΚΤΟΤΗΤΑ ΣΧΕΔΙΑΣΗΣ ..................................................17
2.7.17 ΠΕΡΙΓΡΑΦΗ ΚΑΙ ΑΝΑΛΥΣΗ ΤΩΝ ΦΥΛΛΩΝ ΕΡΓΑΣΙΑΣ – ΑΞΙΟΛΟΓΗΣΗ......................17
2.7.18 ΦΥΛΛΑ ΕΡΓΑΣΙΑΣ ...........................................................................................18
2.7.19 Bιβλιογραφία – Δικτυογραφία – πρόσθετοι ψηφιακοί πόροι ..................................24
3. Υπολογιστική σκέψη – Computational Thinking ...............................................................24
4. Εισαγωγή στην πολυπλοκότητα αλγορίθμων ...................................................................27
4.1 Πολυπλοκότητα αλγορίθμων ..................................................................................27
4.2 ΣΚΟΠΟΙ ΚΑΙ ΣΤΟΧΟΙ ............................................................................................27
4.3 ΣΥΝΟΠΤΙΚΗ ΠΕΡΙΓΡΑΦΗ ΤΟΥ ΔΙΔΑΚΤΙΚΟΥ ΣΕΝΑΡΙΟΥ ...............................................27
4.4 Πολυπλοκότητα με συγκεκριμένα παραδείγματα........................................................28
4.4.1 Εύρεση Μεγίστου Στοιχείου σε Πίνακα ...............................................................28
4.4.2 Ανάλυση χειρότερης περίπτωσης ......................................................................29
1. Προοίμιο
Το παρόν επιμορφωτικό υλικό δημιουργήθηκε για να καλύψει τις ανάγκες της «Προχωρημένης
Επιμόρφωσης για την Αξιοποίηση και Εφαρμογή των Τ.Π.Ε. στη διδακτική πράξη» (Επιμόρφωση Β2
επιπέδου ΤΠΕ) που υλοποιείται σε Κέντρα Στήριξης Επιμόρφωσης (Κ.Σ.Ε.) σε όλη την Ελλάδα, για
εκπαιδευτικούς όλων των κλάδων και ειδικοτήτων. Η αρχική ανάπτυξη και στη συνέχεια, η
επικαιροποίηση και ο εμπλουτισμός του επιμορφωτικού υλικού έγινε αντίστοιχα στο πλαίσιο των
πράξεων «Επιμόρφωση Εκπαιδευτικών για την Αξιοποίηση και Εφαρμογή των Ψηφιακών
Τεχνολογιών στην Διδακτική Πράξη (Επιμόρφωση Β’ επιπέδου Τ.Π.Ε.)» και «Επιμόρφωση
Εκπαιδευτικών για την Αξιοποίηση και Εφαρμογή των Ψηφιακών Τεχνολογιών στην Διδακτική
Πράξη (Επιμόρφωση Β’ επιπέδου Τ.Π.Ε.)/ Β’ κύκλος», http://e-pimorfosi.cti.gr, του Επιχειρησιακού
Προγράμματος «Ανάπτυξη Ανθρώπινου Δυναμικού – Εκπαίδευση και Δια Βίου Μάθηση», με τη
συγχρηματοδότηση της Ευρωπαϊκής Ένωσης (Ευρωπαϊκό Κοινωνικό Ταμείο, ΕΣΠΑ 2014-2020) και
του Ελληνικού Δημοσίου.
Η επιμόρφωση Β2 επιπέδου Τ.Π.Ε. υλοποιείται σε ομάδες ενός κλάδου ή συναφών κλάδων
εκπαιδευτικών, δηλαδή σε 13 «συστάδες» ως εξής: Β2.1 «Φιλολογικά», Β2.2 «Φυσικές
Επιστήμες», Β2.3 «Μαθηματικά», Β2.4 «Πληροφορική», Β2.5 «Πρωτοβάθμια Εκπαίδευση -
Δάσκαλοι», Β2.6 Πρωτοβάθμια Εκπαίδευση - Νηπιαγωγοί», Β2.7 «Ξένες Γλώσσες», Β2.8 «Καλές
Τέχνες», Β2.9 «Φυσική Αγωγή και Υγεία», Β2.10 «Εκπαιδευτικοί Μηχανικοί», Β2.11 «Οικονομία,
Διοίκηση και Κοινωνικές Επιστήμες», Β2.12 «Επαγγέλματα Γης» και Β2.13 «Ειδική Αγωγή».
Το επιμορφωτικό υλικό Β2 επιπέδου Τ.Π.Ε. είναι διαφορετικό για κάθε συστάδα και περιλαμβάνει
υλικό μελέτης-αναφοράς και εκπαιδευτικές δραστηριότητες, ενώ εν γένει συνοδεύεται από
υποστηρικτικό και άλλο πρόσθετο υλικό (οδηγίες προς τους επιμορφωτές και προς τους
επιμορφούμενους, αρχεία παρουσιάσεων κ.ά.). Διατίθεται και αξιοποιείται στο πλαίσιο της
επιμόρφωσης με τη μορφή «μαθήματος»/ e-course (ένα ανά συστάδα), μέσω της πλατφόρμας
ηλεκτρονικής μάθησης του έργου, η οποία βασίζεται στο ελεύθερο λογισμικό ανοικτού κώδικα
moodle.
Συντάχθηκε υπό την επίβλεψη και στο πλαίσιο των αρμοδιοτήτων του ειδικού Επιστημονικού
Συμβουλίου1 του Ι.Τ.Υ.Ε. – «Διόφαντος», το οποίο έχει συσταθεί με την υπ’ αριθ.
Π568/28.07.2011 Απόφαση, και στην παρούσα Πράξη λειτουργεί ως εξειδικευμένο επιστημονικό
συμβουλευτικό όργανο του Ι.Τ.Υ.Ε. - «Διόφαντος», δικαιούχου φορέα υλοποίησης της Πράξης.
Συμπληρωματικά και για την κάλυψη των απαιτήσεων των «νέο»-εισερχόμενων στην επιμόρφωση
κλάδων / ειδικοτήτων εκπαιδευτικών (βλ. παραπάνω, συστάδες Β2.7 έως Β2.13), στο πλαίσιο της
παρούσας Πράξης λειτουργεί ευρύτερη Επιστημονική Επιτροπή, η οποία αποτελείται από τους
παρακάτω Καθηγητές, επιστημονικούς συνεργάτες του δικαιούχου (Ι.Τ.Υ.Ε. – «Διόφαντος»),
καθώς και του συμπράττοντα φορέα υλοποίησης της Πράξης (Ι.Ε.Π.):
Χαράλαμπο Ζαγούρα, Πανεπιστήμιο Πατρών, ο οποίος έχει την ευθύνη συντονισμού των
εργασιών της Επιτροπής
1
Το Επιστημονικό Συμβούλιο του Ι.Τ.Υ.Ε.-«Διόφαντος» για την επιμόρφωση, αποτελείται από τους Καθηγητές: i)
Χαράλαμπο Ζαγούρα, Πανεπιστήμιο Πατρών, ο οποίος έχει την ευθύνη συντονισμού των εργασιών του Συμβουλίου, ii)
Βασίλειο Δαγδιλέλη, Πανεπιστήμιο Μακεδονίας, iii) Βασίλειο Κόμη, Πανεπιστήμιο Πατρών, iv) Δημήτριο Κουτσογιάννη,
Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης, v) Πολυχρόνη Κυνηγό, Εθνικό Καποδιστριακό Πανεπιστήμιο Αθηνών και vi)
Δημήτριο Ψύλλο, Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης
Στο παρόν υλικό έχει κατάλληλα ενσωματωθεί ένα μικρό μέρος κοινού υλικού για όλες τις
συστάδες (Γενικό Μέρος2), που αναπτύχθηκε για την Εκπαίδευση Επιμορφωτών Β’ επιπέδου Τ.Π.Ε.
2
Στην αρχική του μορφή το Γενικό Μέρος του Επιμορφωτικού υλικού δημιουργήθηκε από
συγγραφική ομάδα, με επικεφαλής τον Βασίλη Δαγδιλέλη, Καθηγητή του Πανεπιστημίου
Μακεδονίας και συμμετέχοντες τους:
Καψάλη Αχιλλέα, πρώην Καθηγητή στο Πανεπιστήμιο Μακεδονίας.
Παπαδόπουλο Ιωάννη, Επίκουρο Καθηγητή στο Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης.
Φαχαντίδη Νικόλαο, Αναπληρωτή Καθηγητή στο Πανεπιστήμιο Μακεδονίας.
Υποτίθεται ότι η συνεχής γραμμή δείχνει την «καμένη» πλευρά και η στικτή την «ωμή»
Η μόνη πράξη που είναι επιτρεπτή είναι το αναποδογύρισμα ενός μέρους του σωρού επί τόπου: ο
«κρεπιέρης» βάζει τη σπάτουλα ανάμεσα σε δυο κρέπες (ή ανάμεσα στην πρώτη κρέπα και τον
πάγκο) και αναποδογυρίζει τις κρέπες που είναι πάνω από τη σπάτουλα. Η παρακάτω εικόνα είναι
ενδεικτική:
Ο «κρεπιέρης» έβαλε τη σπάτουλα εκεί που τελειώνουν οι κόκκινες κρέπες και αρχίζουν οι μαύρες
και τις αναποδογύρισε επί τόπου.
Μπορείτε να βρείτε μια μέθοδο (έναν αλγόριθμο) ώστε ο «κρεπιέρης» να μπορεί κάθε βράδυ να
τακτοποιεί όλες τις κρέπες με τον τρόπο που περιγράψαμε;
Η απάντηση (μια απάντηση...) είναι η εξής:
1. Βρες τη μεγαλύτερη κρέπα και με ένα αναποδογύρισμα φέρτην στην κορυφή (εάν δεν είναι
ήδη – κατά τύχη)
2. Αν η μεγαλύτερη κρέπα στην κορυφή δεν είναι με την ανάποδη φορά (η «καμένη» πλευρά
προς τα πάνω) αναποδογύρισε την ώστε να τοποθετηθεί με την «καμένη» πλευρά προς τα
πάνω.
3. Αναποδογύρισε ολόκληρο το σωρό. Τώρα η μεγαλύτερη κρέπα είναι στην τελική της θέση
και μάλιστα με τη σωστή φορά.
4. Επανάλαβε τη διαδικασία για τις κρέπες που δεν είναι στην τελική τους θέση, μέχρις ότου
τακτοποιηθούν όλες.
Το μικρό αυτό παράδειγμα είναι ενδεικτικό του τρόπου με τον οποίο χωρίς Η.Υ. μπορούν να
διδαχθούν ορισμένες βασικές έννοιες της Πληροφορικής και μάλιστα βιωματικά και με παιγνιώδη
τρόπο (και ο αλγόριθμος έχει μάλιστα δομή τύπου repeat…until). Να σημειωθεί και η έννοια του
σωρού (stack), της ακολουθίας που οδηγεί σε λύση (αλγόριθμος) κ.ά. εισάγονται με έναν τρόπο
σχεδόν φυσικό και παιγνιώδη.
Στην τάξη, μπορούν να χρησιμοποιηθούν αντικείμενα (π.χ. κατάλληλα διαμορφωμένα χαρτόνια ή
κομμάτια από λεπτό νοβοπάν ή οποιοδήποτε άλλο ανάλογο υλικό). Αν πρόκειται για μεγαλύτερους
μαθητές μπορεί όλη διαδικασία να γίνει νοερά
Ακόμη, θα μπορούσαν να τεθούν και ερωτήματα του εξής είδους: στην παραπάνω μέθοδο
(αλγόριθμο) υποθέσαμε πως οι κρέπες είναι όλες άνισες μεταξύ τους. Τι αλλάζει (αν αλλάζει) εαν
υπάρχουν και κρέπες του ίδιυ μεγέθους. Και μια ακόμη (φαινομενικά ανόητη): τι θα άλλαζε στη
μέθοδο αν αντί για κρέπες είχαμε πίτσες; Δηλαδή τελικά ο αλγόριθμος ίναι η ουσία και όχι αυτά
καθαυτά τα «αντικείμενα», επί των οποίων εφαρμόζεται.
-----------------------------------------------------------------------------
Επειδή το πλήθος των σχετικών πεδίων και δραστηριοτήτων είναι μεγάλο, στο Υλικό Αναφοράς
παρουσιάζονται ορισμένες κατηγορίες δραστηριοτήτων csunplugged. Στις αντίστοιχες
«Δραστηριότητες» παρατίθεται ένα μεγάλο πλήθος δραστηριοτήτων από τις οποίες ο επιμορφωτής
θα επιλέξει όσες θεωρεί σημαντικές. Επίσης, στο «πρόσθετο Ψηφιακό Υλικό» υπάρχουν πολλές
αναφορές σε πρόσθετους ψηφιακούς πόρους.
https://el.wikipedia.org/wiki/%CE%98%CE%B5%CF%83%CE%B9%CE%B1%CE%BA%CF%8C_
%CF%83%CF%8D%CF%83%CF%84%CE%B7%CE%BC%CE%B1
Η ιστορία των συστημάτων αρίθμησης προσφέρει πολλά στοιχεία κατάλληλα για διδακτική
εκμετάλλευση: για παράδειγμα, τα συστήματα των αρχαίων Ελλήνων (α,β,γ,δ,...) και των Ρωμαίων
(I, II, III, IV,…) είναι ακατάλληλα για εκτέλεση πράξεων, ενώ το παρόν θεσιακό σύστημα είναι
εξαιρετικό για το σκοπό αυτό. Τα συγκεκριμένα ψηφία 0,1,2,...,9 επινοήθηκαν από τους Άραβες (οι
οποίοι, ενδεχομένως, τα κληρονόμησαν από τους Ινδούς). Ιδιαίτερη αναφορά γίνεται στο «0»,
στην ιδέα δηλαδή ενός ιδιαίτερου συμβόλου που αναπαριστά το «τίποτε» (η Wikipedia αναφέρει
ότι το σύμβολο «0» ενδεχομένως προέρχεται από την αρχαία ελληνική λέξη «ουδέν»). Αυτή η
«καθυστέρηση» στην επινόηση του συμβόλου του μηδενός είναι ενδεικτική της τάσης, επί πολλούς
αιώνες οι αριθμοί να συνδέονται άμεσα με οικονομικές δραστηριότητες και όχι ως σύνολα με
συγκεκριμένες ιδιότητες. Σε αυτή τη λογική το «0» είναι περιττό (μπορώ να πω «δεν έχω κανένα
μήλο», αντι για «έχω μηδέν μήλα»). Κάτι ανάλογο ισχύει και για τους αρνητικούς αριθμούς (που
εισήχθησαν στα Μαθηματικά τον 12ο αιώνα).
Μέσα στο πλαίσιο αυτό και δεδομένης της μεγάλης εξοικείωσης, του αυτοματισμού, των μαθητών
με το δεκαδικό σύστημα οι μαθητές έχουν δυσκολίες να κατανοήσουν τη λειτουργία (αλλά και τη
χρησιμότητα) της αναπαράστασης των δεκαδικών αριθμών με βάση τις δυνάμεις του δέκα, του δυο
κ.λπ.
Οι σχετικές δρστηριότητες αποσκοπούν στην κατανόηση των εννοιών αυτών από τους μαθητές.
Σταδιακά το σύστημα UNICODE εξελίχθηκε σε ένα εξαιρετικά σύνθετο σύνολο κανόνων και
σχέσεων που καλύπτει ένα σημαντικό μέρος αναγκών όχι μόνο της «συνήθους» γραφής, αλλά και
ιδιαίτερα σύμβολα όπως τα Μαθηματικά, σύμβολα της Χημείας, ή ακόμη και πολιτισμών οι οποίοι
υπήρξαν στο παρελθόν, αλλά σήμερα δεν υφίστανται πλέον (ιερογλυφικά ή σφηνοειδής γραφή).
Για τη χρήση του UNICODE χρησιμοποιούνται διάφορα σχήματα κωδικοποίησης με πλέον δημοφιλή
τα UTF-8, UTF-16 και UTF-32 (UTF = Unicode Transformation Format). O λόγος για τον οποίο
χρησιμοποιούνται διαφορετικά σχήματα κωδικοποίησης είναι ότι ορισμένα από αυτά είναι πολύ
κατάλληλα για μια κατηγορία γλωσσών (όπως τα Αγγλικά-Αμερικανικά), αλλά λιγότερο κατάλληλα
για άλλες γλώσσες (όπως οι Ασιατικές). To πρώτο εξ αυτών χρησιμοποιεί συνολικά 5 bytes, ενώ το
δεύτερο 6 bytes για την κωδικοποίηση χαρακτήρων. Και τα δυο έχουν προσφέρουν πλήρη
συμβατότητα με την κωδικοποίηση ΑSCII – δηλαδή ένα κείμενο με κωδικοποίηση ASCII έχει
ακριβώς την ίδια εμφάνιση και ιδιότητες (π.χ. ταξινομικές) με το κείμενο κωδικοποιημένο με
UNICODE.
Αξιοσημείωτο είναι ότι το Unicode Concortium, μια διεθνής επιτροπή που ασχολείται με την
κωδικοποίηση στο Unicode, έχει αποφασίσει να αποδώσει έναν κωδικό και σε πολλές
συναισθεικόνες (emoticons, emojis), καθώς η χρήση τους είναι πια γενικευμένη σε όλα τα
ψηφιακά μέσα. Μπορεί κανείς να δεί τις αντιστοιχίσεις μεταξύ των διαφόρων συμβόλων και του
Unicode στην ακόλουθη διεύθυνση: http://unicode.org/emoji/charts/full-emoji-list.html
(τελευταία επίσκεψη, Ιούλιος 2022).
Η απεικόνιση του αντίστοιχου συμβόλου δεν είναι πάντοτε η ίδια: ο κωδικός για ένα χαμογελαστό
πρόσωπο θα είναι ο ίδιος σε διάφορα μέσα (για παράδειγμα σε ένα iphone και στο Gmail), αλλά
στα δυο μέσα δε θα εμφανιστεί ακριβώς το ίδιο πρόσωπο.
Τότε η μεγέθυνση της εικόνας δείχνει ότι στην πραγματικότητα η εικόνα απoτελείται από μικρά επί
μέρους στοιχεία: μικρά τετραγωνίδια τα οποία είναι μαυρισμένα ή όχι (τα λεγόμενα εικονοστοιχεία
ή pixels = picture elements). Άρα η εικόνα μπορεί να παρασταθεί ως ένα σύνολο μαυρισμένων ή
λευκών τετραγωνιδίων ενός πλέγματος. Η ψηφιοποίηση στη συνέχεια είναι εύκολη: αρκεί να τεθεί
0 σε κάθε λευκό τετραγωνίδιο και 1 σε κάθε μαυρισμένο.
00001110000
00111111100
01111111110
κλπ
Τότε η πρώτη σειρά αποτελεί έναν αριθμό εκφρασμένο στο δυαδικό σύστημα:
00001110000 = 1110000 = 112 του δεκαδικού
κι ανάλογα ισχύουν για τις υπόλοιπες σειρές. Η αντίστροφη διαδικασία είναι τελείως ανάλογη. Για
παράδειγμα στην τρίτη σειρά μπορεί να αντιστοιχεί ο αριθμός 478 του δεκαδικού, δηλαδή
478 = 11111000 = 00011111000 (επειδή αντιστοιχούν 11 ψηφία, τα κενά από αριστερά
συμπληρώνονται με μηδενικά), δηλαδή τα τετραγωνίδια της σειράς θα είναι ΛΛΛΜΜΜΜΜΛΛΛ
(όπου Λ ένα λευκό τετραγωνίδιο κι όπου Μ ένα μαυρισμένο)
Για τα χρώματα, ακολουθούνται οι κανόνες που ισχύουν για τη μείξη των βασικών χρωμάτων. Ως
βάση για τις οθόνες των Η.Υ. χρησιμοποιούνται τα βασικά χρώματα κόκκινο, μπλε, πράσινο (RGB),
2.6.2 Συμπίεση
Η συμπίεση των δεδομένων συμβάλλει στη μείωση του χώρου που απαιτείται για να αποθηκευτεί
(άρα και να μεταφερθεί) μια πληροφορία ή ένα σύνολο πληροφοριών. Είναι μια πολύ συνηθισμένη
πρακτική για αρχεία εικόνων, ήχου, βίντεο.
Φυσικά η συμπίεση πολλές φορές υποβιβάζει την ποιότητα του αρχικού (ασυμπίεστου)
ντοκουμέντου (εικόνας, μουσικής,…), αλλά, κατά περίπτωση η υποβάθμιση της ποιότητας μπορεί
να είναι ανεκτή ή ακόμη και δυσδιάκριτη. Στο http://csfieldguide.org.nz/en/chapters/coding-
compression.html (τελευταία επίσκεψη, Ιούλιος 2022) υπάρχουν 2 εικόνες, εκ των οποίων η μία
έχει μέγεθος 135 ΚΒ, ενώ η άλλη 55 ΚΒ, αλλά η διαφορά μεταξύ τους είναι πράγματι πολύ μικρή.
Σε άλλες περιπτώσεις φυσικά (όπως η συμπίεση ενός αρχείου κειμένου, δεδομένων ή ενός
λογισμικού) καμιά αλλοίωση δεν είναι ανεκτή και το συμπιεσμένο αρχείο πρέπει να περιλαμβάνει
ακέραιη την πληροφορία του αρχικού (ασυμπίεστου) αρχείου.
Ένα ιδιαίτερο είδος format για αποθήκευση εικόνων με bits είναι το format .pbm. Στο πρόσθετο
ψηφιακό υλικό υπάρχει μια απλή εικόνα σε format .pbm και η μορφή του αντίστοιχου αρχείου (μια
διαδοχική σειρά από 0 και 1). Η τεχνική του μεταβλητού μήκους επιτρέπει τη συμπίεση εικόνων
καθώς αποθηκεύει όχι τα ίδια τα bits, αλλά τη διαδοχή τους στο αρχείο. Στο
http://csfieldguide.org.nz/en/interactives/run-length-encoding/index.html (τελευταία επίσκεψη,
Ιούλιος 2022) ένα κατάλληλο περιβάλλον επιτρέπει τις δοκιμές με αλληλεπιδραστικό τρόπο.
Οι κώδικες Huffman αποτελούν μια ιδιαίτερη τεχνική η οποία επιτρέπει την βελτιστοποίηση της
κωδικοποίησης διαφόρων δεδομένων ώστε να απαιτείται ελάχιστος χώρος αποθήκευσης. Οι
κώδικες εκμεταλλεύονται την απλή ιδέα ότι σε μια κωδικοποίηση μιας συμβολοσειράς (γράμματα,
Μπορούν τα τρία σπίτια να συνδεθούν με τις τρεις υπηρεσίες (ηλ. ρεύμα κ.λπ.) χωρίς να τέμνονται
οι γραμμές τους); Παρεμπιπτόντως η απάντηση είναι ότι δε μπορούν. Περισσότερες λεπτομέρειες
υπάρχουν στις «Δραστηριότητες».
Τώρα θα πρέπει να χρωματίστε αυτούς τους δυο χάρτες χρησιμοποιώντας όσο μπορείτε λιγότερα
χρώματα. Πόσα χρώματα χρειάζεστε;
Χωρίς να χρωματίστε, προσπαθήστε να μαντέψετε πόσα χρώματα απαιτούνται για να χρωματιστεί
το παρακάτω:
Θεωρείτε πως είναι αρκετά 2 χρώματα για να χρωματιστεί οιοσδήποτε χάρτης; Δοκιμάστε να
χρωματίσετε τον ακόλουθο χάρτη:
Βλέπετε για ποιο λόγο χρειάζονται 4 χρώματα; Μήπως αυτό σας βοηθάει να εξηγήσετε γιατί ένας
από τους προηγούμενους χάρτες χρειάζεται τέσσερα χρώματα;
Φύλλο εργασίας 2
Χάρτες και γραφήματα
Θεωρήστε το τελευταίο σχήμα του προηγούμενο φύλλου εργασίας
Μπορείτε ακόμη να μη βάψετε τις περιοχές, αλλά να τοποθετήσετε μια τελεία με το σχετικό χρώμα.
Συνδέοντας με γραμμές τις τελείες αυτές, παίρνουμε ένα σχήμα όπως το ακόλουθο:
Μπορούμε να παραλείψουμε το σχήμα και να αφήσουμε μόνο τις γραμμές που διασυνδέουν τις
τελείες:
Το σχήμα αυτό (ένα σύνολο από τελείες που διασυνδέονται με γραμμές) καλείται γράφημα. Οι
τελείες ονομάζονται κόμβοι ή κορυφές του γραφήματος και οι γραμμές που τις συνδέουν
ονομάζονται τόξα ή ακμές.
Το γράφημα αυτό αναπαριστά το σχήμα παραπάνω, με τη σύμβαση ότι μια κορυφή είναι μια
περιοχή του σχήματος (που έχει ένα χρώμα εάν χρωματίσουμε το σχήμα), ενώ οι ακμές συνδέουν
τις γειτονικές περιοχές.
Στο γράφημα αυτό, φαίνεται καθαρά γιατί χρειάζονται τέσσερα χρώματα: κάθε κόμβος του
συνδέεται με όλους τους άλλους.
Μπορείτε να κάνετε τα αντίστοιχα γραφήματα από τους παρακάτω χάρτες;
Θα διευκολυνθείτε πολύ αν δώσετε ένα όνομα σε κάθε περιοχή του χάρτη (για παράδειγμα:
Α,Β,Γ,.. ή 1,2,3,…) και δώσετε το ίδιο όνομα στους κόμβους (τελίτσες). Μετά ενώνετε τους
κόμβους με μια γραμμή αν οι αντίστοιχες περιοχές στο χάρτη συνορεύουν μεταξύ τους.
Αυτό το τελευταίο, ίσως είναι προτιμότερο να ο χρωματίσετε με ένα πρόγραμμα και ύστερα να
δημιουργήσετε το αντίστοιχο γράφημα.
Τι παρατηρείτε;
Κάθε χάρτης έχει ένα αντίστοιχο γράφημα. Ωστόσο το αντίστροφο δεν είναι πάντα αληθές.
Δοκιμάστε να κατασκευάσετε ένα χάρτη που να αντιστοιχεί στο εξής γράφημα:
Εικόνα 1
Στο Διαδίκτυο μπορεί κανείς να εντοπίσει πολλούς αναλυτικότερους ορισμούς της Υπολογιστικής
σκέψης, όπως ο ακόλουθος (ο οποίος περιγράφει λεκτικά την παραπάνω εικόνα 1). Στον ορισμό
αυτό η Υπολογιστική σκέψη περιγράφεται ως μια σύνθεση από 6 έννοιες και 5 προσεγγίσεις. Για
μια αναλυτικότερη μελέτη των εννοιών αυτών, με μια αφθονία παραδειγμάτων κυρίως για την
πρωτοβάθμια εκπαίδευση, μπορεί κανείς να κατευθυνθεί στο:
https://barefootcas.org.uk/barefoot-primary-computing-resources/concepts/computational-
thinking/
Εύκολα μπορούν στο Διαδίκτυο να εντοπιστούν και αντίστοιχες πηγές για τη Δευτεροβάθμια
εκπαίδευση: για παράδειγμα, το άρθρο Computational Thinking in Secondary Education: Where
Does It Fit? A Systematic Literary Review (υπάρχει αντίγραφό του στο πρόσθετο ψηφιακό υλικό)
περιλαμβάνει πολλά σχετικά στοιχεία.
Οι βασικές έννοιες είναι:
1. Η Λογική (https://www.barefootcomputing.org/concepts-and-approaches/logic, τελευταία
επίσκεψη Δεκέμβριος 2022)
2. Οι αλγόριθμοι https://www.barefootcomputing.org/concepts-and-approaches/algorithms,
τελευταία επίσκεψη Δεκέμβριος 2022)
3. Η ανάλυση (στα επιμέρους, https://www.barefootcomputing.org/concepts-and-
approaches/decomposition, τελευταία επίσκεψη Δεκέμβριος 2012)
Αντίστοιχα, οι προσεγγίσεις (δηλαδή ακριβέστερα: καλές πρακτικές και στάσεις) είναι οι εξής:
1. Το «σκάλισμα» (πρόχειρη αναζήτηση, tinkering,
https://www.barefootcomputing.org/concepts-and-approaches/tinkering, τελευταία
επίσκεψη Δεκέμβριος 2018)
2. H δημιουργικότητα (https://www.barefootcomputing.org/concepts-and-
approaches/creating, τελευταία επίσκεψη Δεκέμβριος 2018)
3. Η διόρθωση (debugging, https://www.barefootcomputing.org/concepts-and-
approaches/debugging, τελευταία επίσκεψη Δεκέμβριος 2018)
4. H επιμονή (https://www.barefootcomputing.org/concepts-and-approaches/persevering,
τελευταία επίσκεψη Δεκέμβριος 2018)
5. (https://www.barefootcomputing.org/concepts-and-approaches/collaborating, τελευταία
επίσκεψη Δεκέμβριος 2019).
Επίσης, η Διεθνής Εταιρεία για την τεχνολογία στην Εκπαίδευση (ISTE), σε συνεργασία με την
Ένωση των εκπαιδευτικών της Επιστήμης των Υπολογιστών επεξεργάστηκαν (με τη βοήθεια και
άλλων εμπειρογνωμόνων) έναν λειτουργικό ορισμό, ο οποίος υπέστη και την κρίση περίπου 700
ειδικών. Σύμφωνα με τον ορισμό αυτό, η υπολογιστική σκέψη είναι μια διαδικασία επίλυσης
προβλημάτων, που έχει τα εξής χαρακτηριστικά, τουλάχιστον:
Η διατύπωση των προβλημάτων είναι τέτοια, ώσε να επιτρέπει τη χρήση Η.Υ. και άλλων
εργαλείων, για την επίλυση τους.
Τα δεδομένα είναι λογικά οργανωμένα και αναλυμένα.
Τα δεδομένα αναπαριστώνται μέσω αφαιρέσεων (γενικεύσεων), όπως τα μοντέλα και οι
προσομοιώσεις.
Οι λύσεις είναι αυτοματοποιημένες μέσω αλγοριθμικής σκέψης (δηλαδή εκφρασμένες ως
πεπερασμένες σειρές ταξινομημένων βημάτων)
Οι ενδεχόμενες λύσεις που προτείνονται ταυτοποιούνται, αναλύονται και εφαρμόζονται με
στόχο την επίτευξη του πιο αποτελεσματικού συνδυασμού βημάτων και πόρων.
Η διαδικασία επίλυσης τους συγκεκριμένου προλήματος μπορεί να γενικευτεί και να
εφαρμοστεί και σε άλλα προβλήματα, ενός ευρέος φάσματος.
Αυτές οι δεξιότητες υποστηρίζονται και επαυξάνονται από μια σειρά βασικών ικανοτήτων και
στάσεων, όπως:
αυτοπεποίθηση στην αντιμετώπιση της πολυπλοκότητας
επιμονή στην επεξεργασία δύσκολων προβλημάτων
ανοχή στην αμφισημία
ικανότητα στην αντιμετώπιση ανοιχτών προβλημάτων
ικανότητα επικοινωνίας και συνεργασίας με άλλους για ένα κοινό στόχο ή κοινή λύση σε ένα
πρόβλημα.
Τόσο απευθείας με αναζήτηση μέσω του Διαδικτύου, όσο και από την παρατιθέμενη βιβλιογραφία
είναι εύκολο να εντοπιστούν πολλές βιβλιογραφικές αναφορές σχετικές με την υπολογιστική σκέψη
και να χρησιμοποιηθούν στην δημιουργία σχετικών σεναρίων, όπως οι παρακάτω:
Τώρα, το πρώτο πράγμα που θα κάνουμε είναι να μετρήσουμε πόσες βασικές εντολές εκτελεί αυτό
το τμήμα κώδικα. Αυτό θα το κάνουμε μόνο μία φορά και στη συνέχεια δεν θα είναι απαραίτητο
καθώς αναπτύσσουμε τη θεωρία μας. Καθώς αναλύουμε αυτό το τμήμα κώδικα, θέλουμε τη δομή
επανάληψης να την μετατρέψουμε σε απλές εντολές, εντολές δηλαδή που μπορούν να
εκτελεστούν από τον επεξεργαστή άμεσα. Θα υποθέσουμε ότι ο επεξεργαστής μας μπορεί να
εκτελέσει τη κάθε μία από τις ακόλουθες διεργασίες ως μία εντολή:
Την ανάθεση μιας τιμής σε κάποια μεταβλητή.
Την εύρεση της τιμής ενός συγκεκριμένου στοιχείου σε ένα πίνακα.
i = 0 και
i<n
Αυτές θα τρέξουν πριν από την πρώτη επανάληψη του for. Μετά από κάθε επανάληψη του for,
χρειάζεται να τρέξουμε δύο επιπλέον εντολές, μία αύξηση του i και μία σύγκριση, για να δούμε αν
θα παραμείνουμε μέσα στον βρόχο:
i = i + 1 και
i<n
Συνεπώς, αν αγνοήσουμε το σώμα του βρόχου, ο αριθμός των εντολών που χρειάζεται αυτός ο
αλγόριθμος είναι 4 + 2n. Δηλαδή 4 εντολές στην αρχή του for και 2 εντολές στο τέλος κάθε
επανάληψης, εκ των οποίων έχουμε n. Μπορούμε τώρα να ορίσουμε μία μαθηματική συνάρτηση
f(n) που, δοθέντος ενός n, μας δίνει τον αριθμό των εντολών που χρειάζεται ο αλγόριθμος. Για ένα
for με άδειο σώμα, έχουμε f( n ) = 4 + 2n. (https://discrete.gr/complexity/?el)
Αυτό, αν το σκεφτείτε, βγάζει νόημα καθώς το 4 είναι απλώς μία «σταθερά αρχικοποίησης».
Διαφορετικές γλώσσες προγραμματισμού μπορεί να έχουν διαφορετικές απαιτήσεις χρόνου, για να
ξεκινήσουν να τρέχουν. Για παράδειγμα, η Java χρειάζεται κάποιον χρόνο για να αρχικοποιήσει την
εικονική της μηχανή. Καθώς αγνοούμε τις διαφορές στο επίπεδο των γλωσσών προγραμματισμού,
είναι λογικό να αγνοήσουμε αυτή την τιμή.
Το δεύτερο πράγμα που θα αγνοήσουμε είναι η πολλαπλασιαστική σταθερά μπροστά από το n, και
έτσι η συνάρτησή μας θα γίνει f( n ) = n. Όπως βλέπετε, τούτο απλοποιεί πολύ τα πράγματα. Και
πάλι, βγάζει νόημα το ότι πετάμε αυτή τη σταθερά, αν σκεφτούμε με ποιον τρόπο οι διαφορετικές
γλώσσες προγραμματισμού μεταγλωττίζονται. Η πράξη της "εύρεσης στοιχείου πίνακα" μπορεί να
μεταγλωττίζεται σε διαφορετικές εντολές σε διαφορετικές γλώσσες προγραμματισμού. Για
παράδειγμα, στη C, όταν κάνουμε A[ i ] η γλώσσα δεν ελέγχει ότι το i είναι εντός των δηλωμένων
ορίων του πίνακα, ενώ στην Pascal αυτός ο έλεγχος γίνεται. Συνεπώς, ο ακόλουθος κώδικας σε
Pascal:
M := A[ i ]
είναι ισοδύναμος με τον ακόλουθο κώδικα σε C:
if (i >= 0 && i < n) {
M = A[i];
}
Οπότε είναι λογικό να περιμένουμε ότι οι διαφορετικές γλώσσες προγραμματισμού θα οδηγήσουν
σε διαφορετικούς συντελεστές όταν μετράμε τις εντολές τους. Στο παράδειγμά μας, όπου
χρησιμοποιούμε έναν «χαζό» μεταγλωττιστή για την Pascal ο οποίος δεν ξέρει τίποτα για πιθανές
βελτιστοποιήσεις, η Pascal χρειάζεται 3 εντολές για κάθε πρόσβαση σε στοιχείο πίνακα αντί για την
μία εντολή που χρειάζεται η C. Το ότι αγνοούμε αυτόν τον συντελεστή είναι συμβατό με την ιδέα
Eίναι φανερό ότι μετά από κάποιον αριθμό (το 10), η πράσινη συνάρτηση f(x)=2x ξεπερνάει τη
μπλε συνάρτηση f(χ)=χ3 και αυξάνεται πολύ ταχύτερα από αυτήν.
Επίσης, στο ακόλουθο παράδειγμα:
Η συνάρτηση n3, που απεικονίζεται με μπλε χρώμα, ξεπερνά τη συνάρτηση 1999n, που
απεικονίζεται με κόκκινο χρώμα, στο n = 45. Από αυτό το σημείο και μετά, παραμένει μεγαλύτερη
για πάντα. Στοιχεία από https://discrete.gr/complexity/?el.
Το πρόβλημα του περιπλανώμενου πωλητή ανήκει στην κατηγορία των NP-προβλημάτων3, δηλαδή
των προβλημάτων που μπορεί να επαληθευτεί εύκολα και γρήγορα ότι υπάρχει λύση, χωρίς να
μπορεί να βρεθεί το ίδιο εύκολα ποια είναι αυτή η λύση. Η εύρεση λύσης στα NP-προβλήματα
εξαρτάται από το μέγεθος του προβλήματος. Με άλλα λόγια, όσο αυξάνεται το μέγεθος του
προβλήματος, τόσο αυξάνεται και η δυσκολία εύρεση λύσης στο πρόβλημα. Ενώ λοιπόν στα NP
προβλήματα είναι εύκολο να εντοπιστεί εάν μία προτεινόμενη λύση αποτελεί βέλτιστη λύση του
προβλήματος ή όχι, η εύρεση ενός γενικευμένου αλγορίθμου εύρεσης λύση δεν είναι εύκολο να
καθοριστεί.
Ας δούμε ένα πρόγραμμα σε Python το οποίο προσθέτει δύο στοιχεία ενός πίνακα μαζί και στη
συνέχεια αποθηκεύει αυτό το άθροισμα σε μία άλλη μεταβλητή:
v = a[ 0 ] + a[ 1 ]
Εδώ έχουμε ένα σταθερό πλήθος εντολών, οπότε προκύπτει f( n ) = 1.
Το ακόλουθο πρόγραμμα σε Python ελέγχει αν ένα πίνακας που ονομάζεται A, μεγέθους n, περιέχει
δύο ίδιες τιμές οπουδήποτε μέσα του:
3
Για τις ανάγκες της Επιμόρφωσης θα δεχτούμε εδώ αυτήν την πρώτη, απλοποιημένη προσέγγιση των ΝΡ-προβλημάτων. Ο
ακριβής ορισμός και η ανάλυση τους ξεπερνάει τα όρια του παρόντος επιμορφωτικού υλικού.
Καθώς εδώ έχουμε δύο φωλιασμένους βρόχους τον ένα μέσα στον άλλο, θα έχουμε ασυμπτωτική
συμπεριφορά που περιγράφεται από την f( n ) = n2.
Εμπειρικός κανόνας: Τα απλά προγράμματα μπορούν να αναλυθούν μετρώντας τους
φωλιασμένους βρόχους που υπάρχουν στο πρόγραμμα. Ένας απλός βρόχος που διασχίζει n
στοιχεία δίνει f( n ) = n. Ένας βρόχος μέσα σε έναν βρόχο δίνει f( n ) = n2. Ένας βρόχος μέσα σε
έναν βρόχο μέσα σε έναν βρόχο δίνει f( n ) = n3.
Αν έχουμε ένα πρόγραμμα που καλεί μια συνάρτηση μέσα σε έναν βρόχο και ξέρουμε τον αριθμό
των εντολών που χρειάζεται η συνάρτηση που καλείται, είναι εύκολο να αποφανθούμε για τον
αριθμό των εντολών ολόκληρου του προγράμματος. Πράγματι, ας δούμε αυτό το παράδειγμα σε
Python:
Αν ξέρουμε ότι η f(n) είναι μία συνάρτηση που πραγματοποιεί ακριβώς n εντολές, μπορούμε να
ξέρουμε ότι ο αριθμός των εντολών όλου του προγράμματος θα είναι ασυμπτωτικά n 2, καθώς η
συνάρτηση καλείται ακριβώς n φορές.
Εμπειρικός κανόνας: Αν έχουμε μία σειρά από βρόχους τον ένα μετά τον άλλο, ο πιο αργός από
αυτούς καθορίζει την ασυμπτωτική συμπεριφορά του προγράμματος. Δύο φωλιασμένοι βρόχοι
ακολουθούμενοι από έναν απλό βρόχο είναι ασυμπτωτικά το ίδιο σαν να είχαμε μόνο τους
φωλιασμένους βρόχους, επειδή οι φωλιασμένοι βρόχοι υπερισχύουν έναντι του απλού.
# Ταξινόμηση Επιλογής
# Πολυπλοκότητα n2
def selectionSort(array, size):
Αυτή είναι μία μέθοδος που ονομάζεται ταξινόμηση επιλογής. Βρίσκει το ελάχιστο στοιχείο του
πίνακά μας (ο πίνακας παραπάνω σημειώνεται ως array και ο δείκτης της ελάχιστης τιμής ως
min_index), το τοποθετεί στο τέλος ενός νέου πίνακα και το διαγράφει από τον αρχικό πίνακα. Στη
συνέχεια, βρίσκει το ελάχιστο ανάμεσα στις τιμές που απομένουν στον αρχικό μας πίνακα,
προσθέτει αυτή την τιμή στον νέο μας πίνακα, έτσι ώστε τώρα να περιέχει δύο στοιχεία, και το
αφαιρεί από τον αρχικό πίνακα. Συνεχίζει αυτή την εργασία, έως ότου όλα τα στοιχεία να έχουν
αφαιρεθεί από τον αρχικό πίνακα και να έχουν προστεθεί στο νέο πίνακα, που σημαίνει ότι ο
πίνακας έχει ταξινομηθεί.
Στο συγκεκριμένο παράδειγμα, βλέπουμε ότι έχουμε δύο φωλιασμένους βρόχους. Ο εξωτερικός
Όπως έχει αναφερθεί και παραπάνω, ο υπολογισμός της πολυπλοκότητας γενικά μια τεχνική που
απαιτεί κατανόηση από την πλευρά του προγραμματιστή – μαθητή.
Αυτό, αναμένεται να λειτουργήσει ως το πιο μεγάλο εμπόδιο για τους μαθητές, οι οποίοι δεν είναι
εύκολο να αντιληφθούν τον τρόπο με τον οποίο ο Η.Υ. με ελάχιστο πλήθος εντολών εκτελεί ένα
μεγάλο πλήθος πολύπλοκων «κινήσεων».
Το φύλλο εργασίας 1 είναι εισαγωγικό και έχει ως στόχο την εξοικείωση των μαθητών με την
Φύλλο εργασίας 1
Δραστηριότητα 1
Φανταστείτε μια τάξη n μαθητών στην οποία δώσατε το στυλό σας σε ένα άτομο. Πρέπει να βρεις
αυτό το στυλό χωρίς να ξέρεις σε ποιον το έδωσες.
Ποιος πιστεύετε είναι ο πιο αποδοτικός τρόπος και γιατί;
Ακολουθούν μερικοί τρόποι για να βρείτε το στυλό και με την αντίστοιχη πολυπλοκότητα.
• Πολυπλοκότητα n2. Πηγαίνεις και ρωτάς τον πρώτο στην τάξη αν έχει το στυλό. Επίσης, ρωτάτε
αυτό το άτομο για τα άλλα 99 άτομα στην τάξη εάν έχουν αυτό το στυλό και ούτω καθεξής,
Αυτό είναι αυτό που ονομάζουμε O(n2).
• Πολυπλοκότητα n. Το να πηγαίνεις και να ρωτάς κάθε μαθητή ξεχωριστά.
• Πολυπλοκότητα logn: Τώρα χωρίζω την τάξη σε δύο ομάδες και μετά ρωτάω: «Είναι στην
αριστερή πλευρά ή στη δεξιά πλευρά της τάξης;» Μετά παίρνω αυτή την ομάδα και τη χωρίζω στα
δύο και ξαναρωτάω, και ούτω καθεξής. Επαναλάβετε τη διαδικασία μέχρι να μείνετε με έναν
μαθητή που έχει το στυλό σας. Η πολυπλοκότητα αυτής της διαδικασίας είναι logn.
Ίσως χρειαστεί να κάνω:
• Τη διαδικασία αναζήτησης με την πολυπλοκότητα n2 αν υπάρχει ο περιορισμός ότι μόνο ένας
μαθητής γνωρίζει σε ποιον μαθητή είναι κρυμμένο το στυλό.
• Τη διαδικασία αναζήτησης με την πολυπλοκότητα n αν ένας μαθητής είχε το στυλό και μόνο
αυτός το γνώριζε.
• Τη διαδικασία αναζήτησης με την πολυπλοκότητα logn εάν όλοι οι μαθητές γνωρίζουν, αλλά θα
μου απαντούσαν μόνο στην ερώτηση αναφορικά με το αν μάντεψα τη σωστή πλευρά.
Δραστηριότητα 2
Δραστηριότητα 3
Ένας πωλητής ζει μέσα πόλη Α και πρέπει να επισκεφτεί τις πόλεις Β, Γ και Δ. Οι αποστάσεις
μεταξύ των πόλεων είναι: AB = 120, AC=140, AD=180, BC=70, BD=100, CD=110. Βρείτε τη
συντομότερη διαδρομή μετ' επιστροφής από την πόλη Α στις άλλες τρεις πόλεις.
Αρχικά, για τους κύκλους Hamilton, το σημείο εκκίνησης δεν έχει σημασία και οποιοδήποτε σημείο
θα μπορούσε να θεωρηθεί ως το σημείο εκκίνησης. Για το πρώτο κύκλωμα θεωρούμε το Α ως
σημείο εκκίνησης. Βρίσκουμε τα ακόλουθα 6 κυκλώματα Hamilton (3 βρόχους που μπορούν να
διανυθούν σε δύο κατευθύνσεις ο καθένας):
A-B-C-F-E-D-A
A-D-E-F-C-B-A
A - B - D - E - F - C - A
A - C - F - E - D - B - A
A - C - B - D - E - F - A
A-F-E-D-B-C-A
Εάν το σημείο εκκίνησης και η κατεύθυνση έχουν σημασία, τότε υπάρχουν 3 x 2 x 6 = 36
κυκλώματα
(x 2 επειδή υπάρχουν 2 κατευθύνσεις σε κάθε μονοπάτι,
και x 6επειδή υπάρχουν 6 πιθανές αφετηρίες).
Για το δεύτερο κύκλωμα, βρήκα τις ακόλουθες πίστες Hamiltonian που ξεκινούν από το Α:
A>B>C>D>H>F>G>E>A
A>B>C>D>H>G>F>E>A
A>B>C>G>F>E>H>D>A
A>B>C>G>E>F>H>D>A
A>B>F>E>H>G>C>D>A
A>B>F>G>C>D>H>E>A
A>B>F>H>D>C>G>E>A
A>B>F>H>E>G>C>D>A
A>B>G>C>D>H>F>E>A
A>D>C>B>F>G>H>E>A
A>D>C>B>F>H>G>E>A
A>D>C>B>G>F>H>E>A
A>D>C>B>G>H>F>E>A
A>D>C>G>B>F>H>E>A
A>D>C>G>E>H>F>B>A
A>D>C>G>H>E>F>B>A
A>D>H>E>F>G>C>B>A
A>D>H>F>B>C>G>E>A
A>D>H>F>E>G>C>B>A
A>D>H>G>C>B>F>E>A
A>E>F>B>C>G>H>D>A
A>E>F>G>H>D>C>B>A
A>E>F>H>D>C>G>B>A
A>E>F>H>G>B>C>D>A
A>E>G>C>B>F>H>D>A
A>E>G>C>D>H>F>B>A
A>E>G>F>H>D>C>B>A
A>E>G>H>F>B>C>D>A
A>E>H>D>C>G>F>B>A
A>E>H>F>B>G>C>D>A
A>E>H>F>G>B>C>D>A
A>E>H>G>F>B>C>D>A
(16 διακριτοί βρόχοι που μπορούν να διανυθούν σε δύο κατευθύνσεις ο καθένας).
Εάν ληφθούν υπόψη η κατεύθυνση και το σημείο εκκίνησης, τότε υπάρχουν 16 x 2 x 8 = 256
κυκλώματα Hamilton.
Τώρα, για το πρόβλημα του πωλητή, πρέπει να επιστρέψει σπίτι, δηλαδή στο σημείο εκκίνησης.
Επειδή συνήθως υπάρχουν πολλές πόλεις προς επίσκεψη, και κατά συνέπεια πολλές διαδρομές (αν
n είναι ο αριθμός των πόλεων, τότε υπάρχουν (n-1)!/2 διαδρομές, όπως εξηγείται στο τέλος της
λύσης), είναι αδύνατο να διερευνήσει κανείς όλα τα κλειστά μονοπάτια, όπου τα σημεία αφετηρίας
και τερματισμού είναι τα ίδια, να μετρήσει αποστάσεις και να επιλέξει.
Υπάρχουν ορισμένοι αλγόριθμοι για αυτό το είδος προβλημάτων που μπορούν να βοηθήσουν. Θα
εφαρμόσουμε τον αλγόριθμο του πλησιέστερου γείτονα και θα συγκρίνουμε το αποτέλεσμα με τις
μετρημένες αποστάσεις.
Ο αλγόριθμος του πλησιέστερου γείτονα λειτουργεί ως εξής:
1. Επιλέξτε οποιαδήποτε πόλη ως αφετηρία. Ονομάστε αυτή την πόλη «Α».
2. Επισκεφθείτε την πλησιέστερη πόλη στην πόλη 'Α', την οποία θα ονομάσουμε πόλη 'Β'. Η πόλη
«Β» γίνεται η «τρέχουσα πόλη».
Σημείο εκκίνησης: Α
AB 120
π.Χ. 70
CD 110
DA 180
--------------
Σύνολο: 480
Χρησιμοποιώντας τον αλγόριθμο του πλησιέστερου γείτονα βρήκαμε μια ελάχιστη απόσταση 480
μονάδων.
Για αυτό το πρόβλημα, υπάρχουν 3! = 6 πιθανά κυκλώματα Hamilton που ξεκινούν από το Α και
δεν είναι τόσο δύσκολο να τα μετρήσουμε όλα:
ABCDA = ADCBA 480
ABDCA = ACDBA 470
ACBDA = ADBCA 490
Το συντομότερο ταξίδι είναι το ABDCA ή το ACDBA, δηλαδή 470 μονάδες.
Ο αριθμός των διακριτών διαδρομών για n πόλεις είναι (n-1)!/2. Αυτό συμβαίνει επειδή για το
πρώτο βήμα του ταξιδιού ο πωλητής έχει (n-1) πιθανές διαδρομές. Για το επόμενο υπάρχουν (n-2)
κ.ο.κ. Αυτό δίνει ένα σύνολο (n-1)!. Όμως, οι μισές διαδρομές θα είναι αντίστροφες από τις
υπόλοιπες, οπότε πρέπει να διαιρέσουμε με το 2. Για 4 πόλεις αυτό σημαίνει 3!/2 = 3 μονοπάτια.
Φύλλο εργασίας 2
ΔΡΑΣΤΗΡΙΟΤΗΤΑ 1
Πόσοι κύκλοι Hamilton υπάρχουν στους ακόλουθους γράφους και ποιοι;
ΔΡΑΣΤΗΡΙΟΤΗΤΑ 2
Πόσες μετακινήσεις δίσκων χρειάζεται ο πύργος τυ Ανόι;
Προσπαθήστε να υπολογίσετε το πλήθος των κινήσεων που απαιτούνται για 0,1,2,3,4,5,...
δίσκους.
Σκεφθείτε ότι η «επίλυση» του πύργου για Ν δίσκους, χρειάζεται 1 + 2*(Ν-1) κινήσεις.
Επαληθεύστε ότι αυτό ισχύει για μικρές τιμές του Ν.
Μήπως θα μποορύσατε νς βρείτε κάποιο αναλυτικό τύπο για τον απευθείας υπολογισμό του
αριθμού των κινήσεων;
ΔΡΑΣΤΗΡΙΟΤΗΤΑ 3
Ένας πωλητής βρίσκεται στην Αθήνα και θέλει να επισκεφτεί όλες τις μεγάλες πόλεις της Ελλάδος
για να πουλήσει το εμπόρευμά του. Θέλει να ελαχιστοποιήσει τις αποστάσεις που θα διανύσει,
περνώντας από κάθε πόλη μόνο μία φορά και φυσικά να επιστρέψει στο σπίτι του. Μπορείτε να τον
βοηθήσετε;
Ο αλγόριθμος που προτείνετε τι πολυπλοκότητα έχει;