Δημιουργώ παιχνίδια στο Scratch - Προγραμματισμός στο ScratchGeorge Palaigeorgiou
Το βιβλίο «Δημιουργώ παιχνίδια στο Scratch» δημιουργήθηκε στα πλαίσια του μαθήματος «Διδακτική της Πληροφορικής ΙΙ» που πραγματοποιήθηκε στο εαρινό εξάμηνο του ακαδημαϊκού έτους 2009-2010, στο τμήμα Μηχανικών Η/Υ, Δικτύων και Τηλεπικοινωνιών, του πανεπιστημίου Θεσσαλίας.
Οι φοιτητές ανέλαβαν πρωταγωνιστικό ρόλο στη δημιουργία ενός εκπαιδευτικού προϊόντος που ελπίζουμε ότι θα είναι χρήσιμο στην εκπαιδευτική κοινότητα και ίσως ωθήσει αρκετούς μαθητές να μυηθούν στο κόσμο του προγραμματισμού από μια μοναδική σκοπιά, αυτή του Scratch.
Συμφωνήσαμε ότι η διδασκαλία πρέπει να ενσωματώνει την προσωπική επιστημολογική θεώρηση του κάθε δασκάλου, τις δικές του διδακτικές προσεγγίσεις αλλά και τις ιδιαίτερες συνθήκες που αφορούν τους μαθητές του, και για τους λόγους αυτούς το βιβλίο αυτό διανέμεται στο διαδίκτυο με άδεια (cc) Creative Commons. Μπορείτε, δηλαδή, να δημιουργήσετε και να διανείμετε τις δικές σας εκδοχές του βιβλίου, με διαφορετικά κεφάλαια, διαφορετικά παραδείγματα, διαφορετικές περιγραφές. Με μεγάλη μας χαρά θα φιλοξενήσουμε στον ιστοχώρο του βιβλίου μας, τα δικά σας δημιουργήματα.
Θα θέλαμε να σημειώσουμε ότι ως πρώτη προσπάθεια χαρακτηρίζεται από αρκετές αδυναμίες. Ελπίζουμε να υπάρχει επόμενη και να γίνει και με τη δική σας συμμετοχή!
Πως όμως φτάσαμε στο τελικό αποτέλεσμα; Συνεργαστήκαμε σε μια πλατφόρμα Wiki για να δημιουργήσουμε το παρόν σύγγραμμα και επιπλέον συνοδευτικό μαθησιακό υλικό. Χρειάστηκαν, όμως:
** 86595 επισκέψεις στο Wiki!
** 664 μηνύματα συζητήσεων!
** 3358 ενημερώσεις ιστοσελίδων!
** 17 ομάδες
** 1 συντονιστής
** μεράκι
Σε διάστημα 4 μηνών προετοιμάστηκε η πρώτη έκδοση του βιβλίου, ενώ για αρκετές εβδομάδ
Δημιουργώ παιχνίδια στο Scratch - Προγραμματισμός στο ScratchGeorge Palaigeorgiou
Το βιβλίο «Δημιουργώ παιχνίδια στο Scratch» δημιουργήθηκε στα πλαίσια του μαθήματος «Διδακτική της Πληροφορικής ΙΙ» που πραγματοποιήθηκε στο εαρινό εξάμηνο του ακαδημαϊκού έτους 2009-2010, στο τμήμα Μηχανικών Η/Υ, Δικτύων και Τηλεπικοινωνιών, του πανεπιστημίου Θεσσαλίας.
Οι φοιτητές ανέλαβαν πρωταγωνιστικό ρόλο στη δημιουργία ενός εκπαιδευτικού προϊόντος που ελπίζουμε ότι θα είναι χρήσιμο στην εκπαιδευτική κοινότητα και ίσως ωθήσει αρκετούς μαθητές να μυηθούν στο κόσμο του προγραμματισμού από μια μοναδική σκοπιά, αυτή του Scratch.
Συμφωνήσαμε ότι η διδασκαλία πρέπει να ενσωματώνει την προσωπική επιστημολογική θεώρηση του κάθε δασκάλου, τις δικές του διδακτικές προσεγγίσεις αλλά και τις ιδιαίτερες συνθήκες που αφορούν τους μαθητές του, και για τους λόγους αυτούς το βιβλίο αυτό διανέμεται στο διαδίκτυο με άδεια (cc) Creative Commons. Μπορείτε, δηλαδή, να δημιουργήσετε και να διανείμετε τις δικές σας εκδοχές του βιβλίου, με διαφορετικά κεφάλαια, διαφορετικά παραδείγματα, διαφορετικές περιγραφές. Με μεγάλη μας χαρά θα φιλοξενήσουμε στον ιστοχώρο του βιβλίου μας, τα δικά σας δημιουργήματα.
Θα θέλαμε να σημειώσουμε ότι ως πρώτη προσπάθεια χαρακτηρίζεται από αρκετές αδυναμίες. Ελπίζουμε να υπάρχει επόμενη και να γίνει και με τη δική σας συμμετοχή!
Πως όμως φτάσαμε στο τελικό αποτέλεσμα; Συνεργαστήκαμε σε μια πλατφόρμα Wiki για να δημιουργήσουμε το παρόν σύγγραμμα και επιπλέον συνοδευτικό μαθησιακό υλικό. Χρειάστηκαν, όμως:
** 86595 επισκέψεις στο Wiki!
** 664 μηνύματα συζητήσεων!
** 3358 ενημερώσεις ιστοσελίδων!
** 17 ομάδες
** 1 συντονιστής
** μεράκι
Σε διάστημα 4 μηνών προετοιμάστηκε η πρώτη έκδοση του βιβλίου, ενώ για αρκετές εβδομάδ
Στις 11 Ιουνίου 2014, είχαμε μία «Βραδιά Αστρονομίας»! Οι μαθητές της Στ στα πλαίσια του περιβαλλοντικού προγράμματος Ταξιδεύοντας από τη Γη στο Διάστημα-Διαστρικές Αποστολές παρουσίασαν τις δράσεις τους (Ο χρυσός δίσκος του Voyager, Αποστολή στον Άρη, Το πείραμα του Ερατοσθένη), τις επισκέψεις και τις κατασκευές –δημιουργίες που συντόνιζαν όλη τη χρονιά. Ταυτόχρονα, με τη βοήθεια του Δρα Σοφοκλή Σωτηρίου, υπεύθυνου έρευνας και ανάπτυξης της Ελληνογερμανικής Αγωγής, μας επισκέφθηκαν 2 ερασιτέχνες αστρονόμοι η κ. Κυριακή Τηγάνη και ο κ. Νίκος Τρεμούλης και μαζί με τα επαγγελματικά τηλεσκόπιά τους, το τηλεσκόπιο του συνάδελφου κ. Κοσμά Νικολάου, και τα χειροποίητα τηλεσκόπια του Γαλιλαίου των μαθητών, πάνω σε τρίποδες εθελοντών γονέων κάναμε μία μοναδική αστροπαρατήρηση της Σελήνης, του Άρη και του Κρόνου!
Study: The Future of VR, AR and Self-Driving CarsLinkedIn
We asked LinkedIn members worldwide about their levels of interest in the latest wave of technology: whether they’re using wearables, and whether they intend to buy self-driving cars and VR headsets as they become available. We asked them too about their attitudes to technology and to the growing role of Artificial Intelligence (AI) in the devices that they use. The answers were fascinating – and in many cases, surprising.
This SlideShare explores the full results of this study, including detailed market-by-market breakdowns of intention levels for each technology – and how attitudes change with age, location and seniority level. If you’re marketing a tech brand – or planning to use VR and wearables to reach a professional audience – then these are insights you won’t want to miss.
Επιχειρησιακή αξιολόγηση πρόβλεψης κινδύνου και συμπεριφοράς πυρκαγιών για τη...Vasilis Kleidaras
•Αξιολόγηση της εφαρμογής που ανέπτυξε το Εργαστήριο Γεωγραφίας Φυσικών Καταστροφών, στα πλαίσια της υπολογιστικής πλατφόρμας νέφους του Venus-C και περιλαμβάνει σύστημα πρόβλεψης και συμπεριφοράς δασικών πυρκαγιών. •Σύγκριση των δεικτών κινδύνου πυρκαγιάς της εφαρμογής του Εργ. Γεωγρ. Φυσ. Καταστροφών και της Γ.Γ.Π.Π. •Προσομοίωση συγκεκριμένων συμβάντων δασικών πυρκαγιών που έλαβαν χώρα στη Λέσβο, ώστε τελικά η χρήση αυτής της εφαρμογής να αποτελέσει ένα επιπλέον εξειδικευμένο εργαλείο στη προσπάθεια της προστασίας του δασικού μας πλούτου.
Οι διαδικασίες που περιγράφονται παραπάνω, στο σύνολό τους αποτελούν μια πρόταση για ομαλή μετάβαση από την παλιά στην νέα χρήση. Σε περίπτωση εκτάκτου ανάγκης (π.χ. κάποιος έκτακτο χειρουργείο) σαφώς και μπορούν να παρακαμφθούν. Θα πρέπει όμως να έχουμε σημειώσει επακριβώς τι κάναμε και γιατί, για να μπορέσει να αντιμετωπιστεί (αν είναι δυνατόν) ανά περίπτωση.
1. Πανεπιστήμιο Πατρών - Σχολή θετικών Επιστημών
Τμήμα Μαθηματικών
Σ ημειώσεις στο μάθημα
Υ π ο λ ο γ ισ τ ικ ή Π ο λ υ π λ ο κ ο τ η τ α
Δημήτριος I. Καββαδίας
Επίκουρος Καθηγητής
Πάτρα, Οκτώβριος 1999
2.
3. Πρόλογος
Οι σημειώσεις αυτές περιλαμβάνουν το μεγαλύτερο μέρος της ύλης του προπτυχιακού μαθήμα
τος «Υπολογιστική Πολυπλοκότητα» που διδάσκεται στο 4ο έτος του Τμήματος Μ αθηματικών
του Πανεπιστημίου Πατρών. Η διάρθρωση τους είναι η ακόλουθη:
Στο πρώτο κεφάλαιο δίδεται μία εισαγω γή στις έννοιες της πολυπλοκότητας αλγορίθμων
και προβλημάτων για διάφορα μέτρα πολυπλοκότητας. Το κεφάλαιο 2 περιγράφει σε βάθος
το βασικό υπολογιστικό μοντέλο που χρησιμοποιείται, τη μηχανή Turing, και τις διάφορες
παραλλαγές του. Δ ίδονται ορισμοί της πολυπλοκότητας χρόνου και χώρου αλγορίθμων και
προβλημάτων. Το επόμενο κεφάλαιο είναι αφιερωμένο στις γενικ ές σχέσεις μεταξύ κλάσεων
πολυπλοκότητας. Σε αυτό περιλαμβάνονται όλες οι γνω σ τές σχέσεις όταν δεν υπάρχουν περιο
ρισμοί στην συνάρτηση πολυπλοκότητας. Το κεφάλαιο 4 αναφέρει τις πολύ κρίσιμες έννοιες
της αναγω γής και της πληρότητας παρουσιάζοντας πλήρη προβλήματα για τις κλάσεις NL, Ρ
και ΝΡ. Τέλος το κεφάλαιο 5 είναι αφιερωμένο στην ΝΡ-πληρότητα. Παρουσιάζεται πληθώρα
προβλημάτων και αποδεικνύεται η πληρότητα τους για την κλάση ΝΡ.
Είμαι ευγνώ μ ω ν στον μεταπτυχιακό φοιτητή του Τμήματος Μ ηχανικών Η λεκτρονικών
Υ πολογιστώ ν & Πληροφορικής του Πανεπιστημίου Πατρών, κ. Ηλία Κ. Σταυρόπουλο για την
ουσιαστική του βοήθεια. Σε αυτόν οφείλεται το μεγαλύτερο μέρος του κεφαλαίου 5 και η
επιμέλεια όλων τω ν σχημάτων και της παρουσίασης.
Δημήτρης Καββαδίας
Πάτρα, Οκτώβριος 1999
ι
7. Περιεχόμενα
Πρόλογος i
Περιεχόμενα ν
1 Ε ισ α γ ω γ ή 1
1.1 Αλγόριθμοι και Π ο λ υ π λ ο κ ό τ η τ α ......................................................................................... 2
1.2 Πολυπλοκότητα Π ρ ο β λη μ ά τω ν............................................................................................ 7
2 Η Μ η χ α νή T u rin g 9
2.1 Περιγραφή - Ο ρ ισ μ ό ς............................................................................................................... 9
2.2 Παράσταση και μέγεθος π ρ ο β λ η μ ά τω ν.............................................................................. 15
2.3 Παραλλαγές της Μηχανής Turing ..................................................................................... 17
2.3.1 Η μη ντετερμινιστική μηχανή T u rin g .................................................................. 19
2.3.2 Η καθολική μηχανή T u r in g ..................................................................................... 21
2.4 Υπολογισμοί με περιορισμούς................................................................................................ 24
2.4.1 Θεωρήματα επιτάχυνσης και συμπίεσης της μ ν ή μ η ς ..................................... 26
2.4.2 Μείωση στον αριθμό των τ α ιν ιώ ν .......................................................................... 27
2.5 Η Μηχανή Τυχαίας Προσπέλασης, RAM ...................................................................... 28
2.5.1 Π εριγραφή-Ο ρισμός.................................................................................................... 29
2.5.2 Ισοδυναμία RAM -Μ ηχανής Turing .................................................................. 30
2.6 Κλάσεις π ο λ υ π λ ο κ ό τη τα ς....................................................................................................... 33
2.7 Α σ κ ή σ εις......................................................................................................................................... 36
3 Ιδ ιό τη τες τ ω ν χ λ ά σ ε ω ν π ο λ υ π λο κ ό τη τα ς 39
3.1 Η συνάρτηση π ο λ υ π λ ο κ ό τ η τ α ς ............................................................................................ 39
3.2 Θεωρήματα Ιερ α ρ χ ία ς............................................................................................................... 40
3.3 Θεωρήματα Χάσματος ........................................................................................................... 42
3.4 Γενικές σχέσεις μεταξύ των κλάσεων π ο λ υ π λ ο κ ό τη τα ς............................................ 44
3.4.1 Μη ντετερμινιστικός χ ρ ό ν ο ς ................................................................................. 44
3.4.2 Μη ντετερμινιστικός χ ώ ρ ο ς ..................................................................................... 45
3.5 Α σ κ ή σ εις......................................................................................................................................... 51
ν
9. Κεφάλαιο 1
Εισαγωγή
Αντικείμενο της Υ πολογιστικής Π ολυπλοκότητας είναι τα υ π ο λ ο γ ι σ τ ι κ ά προ βλήμ ατ α καθώς
και οι ενδογενείς ιδιότητες τους που τα κάνουν να επιλύονται ή να μην επιλύονται αποτελε
σματικά. Σκοπός αυτού του κεφαλαίου είναι να εξηγήσει το αντικείμενο της Υπολογιστικής
Π ολυπλοκότητας δίνοντας έμφαση στην διάκριση μεταξύ Θεωρίας Π ολυπλοκότητας και Θεω
ρίας Αλγορίθμων.
Έ να υπολογιστικό πρόβλημα είναι μια ερώτηση η οποία περιγράφεται από ένα σύνολο
παραμέτρων ή αλλιώς ελεύθερων μ ετ α β λ η τώ ν καθώς και από την σ χ έ σ η που πρέπει να έχει η
λ ύ σ η του με τις μεταβλητές εισόδου. Είναι σημαντική η διάκριση μεταξύ του π ρο β λήματ ος
και ενός σ τ ι γ μ ι ο τ ύ π ο υ του: Το στιγμιότυπο προκύπτει από μια απόδοση συγκεκριμένω ν τιμών
στις παραμέτρους του προβλήματος.
Σαν παράδειγμα ας θεωρήσουμε το πολύ χρήσιμο στην Πληροφορική και εξαιρετικά μελε
τημένο πρόβλημα της Ταξινόμησης (sorting). Παράμετρος αυτού του προβλήματος είναι ένα
διάνυσμα η πραγματικών αριθμών / = (α ι, α2, . . . , α η ). Λύση στο πρόβλημα της Ταξινόμησης
είναι το «ταξινομημένο» διάνυσμα I' = (α'ΐ5 α'2, . . . , α'η ) με συντεταγμένες τους ίδιους αριθμούς
αλλά σε αύξουσα σειρά: α < α,·+1, ΐ = 1, · · · , n — 1.
Έ να στιγμιότυπο του προβλήματος της Ταξινόμησης είναι π.χ. για η = 4 το διάνυσμα
/ = (7, 3,12, — Σε αυτή την περίπτωση η λύση είναι το διάνυσμα V = ( — 3, 7,12).
2). 2,
Η επίλυση ενός υπολογιστικού προβλήματος απαιτεί την σχεδίαση ενός α λ γ ο ρ ίθ μ ο υ ή αλ
λιώ ς μιας σαφούς βήμα προς βήμα διαδικασίας που να οδηγεί στην λύση σε πεπερασμένο αριθμό
βημάτων.
Παρόλο που η ανάπτυξη τεχνικώ ν σχεδιασμού και μελέτη τω ν αλγορίθμων δεν είναι κύριο
αντικείμενο του βιβλίου αυτού, οι αλγόριθμοι είναι η άλλη πλευρά (θετική;) της μελέτης των
υπολογιστικώ ν προβλημάτων και πολλές φορές θα χρειαστεί να περιγράφουμε αλγορίθμους για
κάποιο πρόβλημα. Για λόγους σαφήνειας και απλότητας θα απαιτούμε οι αλγόριθμοι μας να
συντάσσονται από επιμέρους βήματα που είναι συνήθη σε απλά προγράμματα υπολογιστών.
Ό που η απαίτηση συντομίας το επιβάλλει, θα ομαδοποιούμε επίσης συνθετότερες διεργασίες.
Σε μια τέτοια περίπτωση όμως θα είναι κατανοητό ότι η ανάλυση σε πραγματικά «προγραμμα-
τιστικά» βήματα μπορεί να γίνει χωρίς πρόβλημα.
Για την περιγραφή τω ν αλγορίθμων μας θα χρησιμοποιήσουμε μια ψευδογλώσσα προγραμ
ματισμού με βασική δομή δανεισμένη από την Pascal ώστε να συνδυάζουμε την σαφήνεια και
1
10. 2 ΚΕΦΑΛΑΙΟ 1. ΕΙΣΑΓΩΓΗ
περιεκτικότητα με την συντομία. Ο λόγος που δεν χρησιμοποιούμε μια πραγματική γλώ σσα
προγραμματισμού είναι ότι θέλουμε να αποφύγουμε τις συντακτικές ιδιαιτερότητες μιας συ
γκεκριμένης γλώ σ σ ας και να επικεντρωθούμε στον καθαυτό αλγόριθμο. Σαν συνέπεια, δεν
απαιτείται από τον αναγνώ στη εξοικείωση με καμμιά γλώ σσα προγραμματισμού, παρά μόνο με
τις βασικές αρχές του δομημένου προγραμματισμού για να κατανοήσει ένα αλγόριθμο. Εξάλ
λου όπως ήδη αναφέρθηκε, πολλές φορές σχετικά πολύπλοκες διεργασίες θα περιγράφονται
στην φυσική γλώ σσα ώστε να αναδεικνύεται η ουσία του αλγορίθμου.
1.1 Αλγόριθμοι και Πολυπλοκότητα
Ας δώσουμε ένα παράδειγμα περιγράφοντας ένα πολύ κοινό αλγόριθμο για το πρόβλημα της
Ταξινόμησης, τον λεγόμενο “Ταξινόμηση Φυσαλλίδας” (bubblesort).
Π α ρ ά δ ειγμ α 1.1 Περιγραφή του αλγορίθμου bubblesort:
p ro c e d u re b u bb le .s o rt ;
in pu t I ; {ένα η - δ ι ά σ τ α τ ο δ ι ά ν υ σ μ α α ρ ιθ μ ώ ν }
for i := 1 to η — 1 do
for j : = 1 to n —i do
if I ( j ) > I ( j + 1) th e n α ν τ ά λ λ α ζ ε τα I ( j + 1) και I ( j ) ;
return I ;
Η λειτουργία αυτού του αλγορίθμου είναι πολύ απλή. Στην ουσία κάνει ότι και ένας άνθρωπος
που θέλει να ταξινομήσει έναν σύνολο από η ανακατεμένα χαρτιά σύμφωνα με την αύξουσα
σειρά σελίδων: Στην αρχή βρίσκει με διαδοχικές συγκρίσεις με όλα τα υπόλοιπα, το χαρτί με
το μεγαλύτερο νούμερο και το τοποθετεί τελευταίο. Στην συνέχεια βρίσκει το μεγαλύτερο
από τα υπόλοιπα η — 1 χαρτιά και το τοποθετεί προτελευταίο κ.ο.κ. μέχρι το μικρότερο.
Δηλαδή το μεγαλύτερο με τις διαδοχικές αλλαγές θέσεων ανεβαίνει στην τελευταία θέση σαν
φυσαλλίδα. Στον αλγόριθμο αυτή η λειτουργία φαίνεται στο εσωτερικό loop: σαρώνουμε όλα
τα διαδοχικά ζευγάρια από το πρώτο ως το τελευταίο στοιχείο μετακινόντας το μεγαλύτερο
στην θέση με τον μεγαλύτερο δείκτη. Προφανώς μετά το τέλος της σάρωσης στην τελευταία
θέση θα βρεθεί το μεγαλύτερο από όλα τα στοιχεία. Το διάστημα που κάθε φορά σαρώνουμε
είναι από το στοιχείο 1 έως το η — i (στην αρχή i = 1 και το διάστημα είναι από το 1 έως
τ ο η — 1, μετά i = 2 και το διάστημα γίνεται αντίστοιχα 1 έως η — 2 κλπ). Η ορθότητα
του αλγορίθμου είναι προφανής και συνεπώ ς η τελευταία γραμμή πράγματι θα επιστρέφει το
διάνυσμα / ταξινομημένο.
Σαν πρώτο λοιπόν βήμα στην κατανόηση του αντικειμένου της Θεωρίας Πολυπλοκότητας
ας προσπαθήσουμε να μελετήσουμε την πολυπλοκότητα του α λ γ ο ρ ίθ μ ο υ bubblesort και όχι
ακόμη του π ρο β λή μ α τ ος τΐ)ς Ταξινόμησης.
Κάπως γενικά μιλώντας, αυτό σημαίνει την αξιολόγηση του συγκεκριμένου αλγορίθμου,
δηλαδή την εύρεση ιδιοτήτων του που να μας επιτρέψουν να τον χαρακτηρίσουμε σαν καλό
ή κακό. Καλό ή κακό όμως με βάση ποιό μέτρο; Και ακόμη γενικότερα, ποιές είναι τελικά
οι ιδιότητες πως μας ενδιαφέρουν σε ένα αλγόριθμο; Σ ’ αυτή την ερώτηση ο συνηθισμένος
χρήστης προγραμμάτων Η/Υ (άρα και αλγορίθμων) απαντά: Η ταχύτητα. Πραγματικά η
11. 1.1. ΑΛΓΟΡΙΘΜΟΙ Κ Α Ι ΠΟΛ ΥΠΛΟΚΟΤΗΤΑ 3
ταχύτητα σε ένα αλγόριθμο είναι από τα πλέον επιθυμητά χαρακτηριστικά. Ακόμη και στην
εποχή μας όπου η εξέλιξη τω ν υπολογιστών έχει καταφέρει να κατασκευάσει μηχανές με
εξαιρετικές ταχύτητες, τα καινούργια προβλήματα που καλούνται να λύσουν οι υπολογιστές
κάνει την ταχύτητα της χρησιμοποιούμενης μεθόδου, ίσως το πιο σημαντικό χαρακτηριστικό
της. Σε καμμία όμως περίπτωση δεν είναι και το μοναδικό: Η μνήμη είναι μία άλλη παράμετρος
που ενδιαφέρει σε ένα υπολογισμό. Ό πω ς και ο χρόνος, έτσι και ο χώρος (η μνήμη) αποτελεί
υπολογιστικό πόρο σε ανεπάρκεια και κατά συνέπεια ενδιαφέρουν οι επιδόσεις του αλγορίθμου
μας ως προς αυτόν.
Γενικά πάντως το μέτρο της πολυπλοκότητας που μας ενδιαφέρει μπορεί να είναι αρκετά
γενικό ή αρκετά ειδικό ανάλογα με τις ιδιαιτερότητες του προβλήματος και/ή της μηχανής που
χρησιμοποιούμε. Για παράδειγμα σε ένα παράλληλο υπολογιστή (ένα υπολογιστή όπου πολλές
μονάδες επεξεργασίας συνεργάζονται για την επίλυση του ίδιου προβλήματος) ένα στοιχείο που
ενδιαφέρει είναι ο αριθμός τω ν μηνυμάτων που ανταλλάσσονται μεταξύ τω ν επεξεργαστών. Η
πρακτική αιτία για ένα τέτοιο μέτρο πολυπλοκότητας είναι βασικά τεχνολογική: η επικοινωνία
μεταξύ τω ν επεξεργαστών είναι πολύ πιο χρονοβόρα από την καθαυτό επεξεργασία σε ένα
υπολογιστή. Συνεπώς ο αριθμός τω ν ανταλλασσομένων μηνυμάτων κατά την εκτέλεση ενός
αλγορίθμου αποτελεί καλή ένδειξη της ταχύτητας που θα πετύχει.
Ας προσπαθήσουμε τώρα να εκτιμήσουμε τις επιδόσεις, ως προς τον χρόνο, του αλγόριθμου
της φυσαλλίδας που περιγράψαμε στο Παράδειγμα 1.1. Πιο συγκεκριμένα ας προσπαθήσουμε
να εκτιμήσουμε τον αριθμό τω ν συγκρίσεω ν που κάνει όταν ταξινομεί η αριθμούς. Ό πω ς
εξηγήσαμε παραπάνω, κατά την εκτέλεση του εξωτερικού loop για πρώτη φορά θα γίνουν
η —1 συγκρίσεις, κατά την δεύτερη εκτέλεση η —2, την τρίτη η —3 κλπ, ενώ την τελευταία μία
σύγκριση. Σ υνεπώς ο συνολικός αριθμός συγκρίσεω ν είναι η ( η — 1)/2. Εδώ μπορεί κάποιος
να αναρωτηθεί κατά πόσο ο αριθμός τω ν συγκρίσεω ν είναι πραγματική ένδειξη για τον χρόνο
που θα χρειαστεί ο αλγόριθμος μας να ταξινομήσει η αριθμούς. Πραγματικά, όπως μπορεί
να παρατηρήσει ο αναγνώ στης, τα συνολικά βήματα του αλγορίθμου εξαρτώνται και από το
α π ο τ έ λ ε σ μ α τω ν συγκρίσεω ν: στο τελευταίο βήμα η αντιμετάθεση τω ν I ( j + 1) και I ( j ) θα γίνει
μόνο όταν το πρώτο είναι μικρότερο του δεύτερου και συνεπώ ς στην περίπτωση αυτή επιπλέον
χρόνος θα απαιτηθεί για να γίνει η επιπλέον λειτουργία. Μ άλιστα ο χρόνος αυτός μπορεί να
είναι σημαντικός αν για παράδειγμα υποθέσουμε ότι ο αλγόριθμος ταξινομεί εγγραφές στην
δευτερεύουσα μνήμη του υπολογιστή (δίσκο) δηλαδή μία λειτουργία κατά τεκμήριο αργή.
Υπάρχουν εντούτοις ισχυρά επιχειρήματα υπέρ της επιλογής τω ν συγκρίσεω ν σαν μέτρου
πολυπλοκότητας. Κατά πρώτον οι συγκρίσεις αποτελούν άνω φράγμα του αριθμού τω ν αντι
μεταθέσεων. Πράγματι, οι αντιμεταθέσεις μπορεί να είναι το πολύ όσες και οι συγκρίσεις
δηλ. το πολύ η ( η — 1)/2. (Παρεμπιπτόντως, αυτό μπορεί να συμβεί και μάλιστα στην πε
ρίπτωση που το διάνυσμα που δίδεται για ταξινόμηση έχει την αντίστροφη διάταξη, δηλαδή
είναι ταξινομημένο σε φθίνουσα σειρά.) Συνεπώς ο αριθμός τω ν συγκρίσεω ν χαρακτηρίζει την
π ολυ πλο κό τητ α χ ε ι ρ ό τ ε ρ η ς π ε ρ ίπ τ ω σ η ς (worst case com plexity) του αλγορίθμου bubblesort.
Ακόμη όμως και στο τυχαίο τρέξιμο του αλγορίθμου (όπου γενικά περιμένουμε οι συγκρίσεις
να είναι λιγότερες από τις αντιμεταθέσεις), ο αριθμός τω ν συγκρίσεω ν αποτελεί καλή ένδειξη
της συνολικής δουλειάς που κάνει ο αλγόριθμος μας.
0 τρόπος αυτός εκτίμησης της πολυπλοκότητας ενός αλγορίθμου είναι γενικότερος. Τις
περισσότερες φορές η ακριβής εκτίμηση του αριθμού τω ν βημάτων μπορεί να είναι πολύ δύ-
12. 4 ΚΕΦΑΛΑΙΟ 1. ΕΙΣΑΓΩΓΗ
σ χ ο λ ή ή/και να εξαρτάται από την συγκεκριμένη είσοδο του προβλήματος. Επίσης μπορεί
και πάλι να μην αντανακλά απολύτως στο χρόνο που θα κάνει ένας υπολογιστής για να τρέ-
ξει, μια και οι πράξεις σε μια πραγματική μηχανή δεν διαρκούν όλες τον ίδιο χρόνο. Έ τσι
στον αλγόριθμο bubblesort, μια σχολαστική απάντηση θα έπρεπε να είναι της μορφής f ( n )
συγκρίσεις και g i n ) αντιμεταθέσεις μιας και είναι λογικό να υποθέσει κανείς ότι οι συγκρίσεις
και οι αντιμεταθέσεις δεν διαρκούν τον ίδιο χρόνο στον υπολογιστή. Και πάλι όμως δεν θα
είμασταν εντελώ ς ακριβείς: Θα έπρεπε να ληφθούν υπόψη τα βήματα που απαιτούνται για την
εκτέλεση τω ν δύο loops κλπ. Είναι όμως προφανές ότι με τον τρόπο αυτό η απάντηση μας για
το ποιά είναι η πολυπλοκότητα του αλγορίθμου μας αρχίζει να εκφεύγει από τον αλγόριθμο
μας αυτό καθαυτό και μπαίνει σε λεπτομέρειες είτε προγραμματιστικές είτε κατασκευαστικές
του υπολογιστή μας. Για όλους αυτούς τους λόγους συνήθως επιλέγουμε κάποιο βήμα του
αλγορίθμου (που πολλές φορές μπορεί να είναι και συνθετότερη λειτουργία) το οποίο κ υ ρ ι α ρ
χ ε ί στο σύνολο τω ν βημάτων και συνεπώ ς αποτελεί καλή ένδειξη της συνολικής δουλειάς του
αλγορίθμου. Τα υπόλοιπα βήματα που ενδεχομένως να κάνει ο αλγόριθμος μας συνδέονται
συνήθως γραμμικά (είναι δηλαδή ανάλογα) με αυτό το κυρίαρχο βήμα.
Η εξάρτηση του χρόνου που κάνει ένας αλγόριθμος για να απαντήσει από την συγκεκριμένη
είσοδο, όπως επισημάνθηκε παραπάνω, μπορεί να είναι ιδιαίτερα έντονη σε σημείο που να
εγείρει κριτική για την επιλογή μας να αναφέρουμε σαν πολυπλοκότητα ενός αλγορίθμου την
πολυπλοκότητα χειρότερης περίπτωσης. Πράγματι θα ήταν δυνατό η κακή συμπεριφορά ενός
αλγορίθμου να παρουσιάζεται μόνο σε ένα μικρό ποσοστό τω ν στιγμιοτύπων του προβλήματος,
έτσι ώστε ο αλγόριθμος να συμπεριφέρεται ικανοποιητικά στην μ έ σ η ή α ν α μ ε ν ό μ ε ν η περίπτωση.
Για ένα τέτοιο πρόβλημα και αλγόριθμο η α ν α μ ε ν ό μ ε ν η π ολυ πλο κό τητ α του θα ήταν ιδιαίτερα
χρήσιμη. Παρόλο που τέτοιοι συνδυασμοί προβλημάτων, αλγορίθμων και πεδίων εφαρμογών
πραγματικά υπάρχουν, η μαθηματική μελέτη της αναμενόμενης πολυπλοκότητας απαιτεί την
γνώ ση της κατανομής πιθανότητας στις εισόδους (στα στιγμιότυπα), μια πληροφορία που
σπανίως είναι διαθέσιμη. Εξάλλου η πολυπλοκότητα χειρότερης περίπτωσης έχει μέσα της
και ένα στοιχείο ασφάλειας: το χειρότερο που μπορεί να συμβεί είναι αυτό. Αντίθετα η
αναμενόμενη πολυπλοκότητα είναι χρήσιμη (όταν μπορεί να υπολογιστεί) όταν ο αλγόριθμος
χρησιμοποιείται επανειλημένα στο ίδιο σύνολο στιγμιοτύπων. Στην πλειοψηφία λοιπόν των
περιπτώσεων θα ασχοληθούμε με πολυπλοκότητα χειρότερης περίπτωσης.
Η συνάρτηση n ( n —1)/2 είναι η π ολυ πλο κό τητ α χ ρ ό ν ο υ (tim e com plexity) του αλγορίθμου
της φυσαλλίδας. Ό πω ς παρατηρεί ο αναγνώ στης, πρόκειται για μια συνάρτηση μιας ακεραίας
παραμέτρου (στο παράδειγμα μας του η δηλαδή της διάστασης του διανύσματος που θέλουμε
να ταξινομήσουμε). Η παράμετρος αυτή ονομάζεται μ έ γ ε θ ο ς του π ρ ο β λή μ α τ ος και αποτελεί
μέτρο του μεγέθους τω ν δεδομένων εισόδου. Πραγματικά, ανεξάρτητα από την φύση του προ
βλήματος που εξετάζουμε και του αλγορίθμου που επιλέξαμε για την επίλυση του, περιμένουμε
περισσότερος χρόνος να απαιτηθεί για μεγάλα στιγμιότυπα από ότι για μικρότερα και συνεπώς
η πολυπλοκότητα χρόνου πρέπει κ α τ’ ανάγκη να είναι μια συνάρτηση του μεγέθους του προ
βλήματος. Α ντίστοιχες συναρτήσεις ζητούνται για οποιοδήποτε μέτρο πολυπλοκότητας μας
ενδιαφέρει. Η παράμετρος που προσδιορίζει το μέγεθος του προβλήματος εξαρτάται από την
φύση του προβλήματος που εξετάζουμε. Στο πρόβλημα της ταξινόμησης επιλέξαμε το πλήθος
τω ν αριθμών σαν μέγεθος του προβλήματος. Η επιλογή αυτή είναι μάλλον δικαιολογημένη
αν σκεφτεί κανείς ότι κάθε «λογική» αλγοριθμική διαδικασία ταξινόμησης (και για «λογικού»
13. 1.1. ΑΛΓΟΡΙΘΜΟΙ Κ Α Ι ΠΟΛ ΥΠΛΟΚΟΤΗΤΑ 5
μεγέθους αριθμούς), διαχειρίζεται κάθε αριθμό σαν μία μονάδα. Τα περισσότερα προβλήματα
χαρακτηρίζονται από κάποια φυσική παράμετρο που μπορεί να αποτελέσει μέγεθος του προ
βλήματος και συνεπώ ς τις περισσότερες φορές δεν θα υπάρχει δυσκολία στην επιλογή μας.
Αξιοσημείωτες εξαιρέσεις στον κανόνα αυτό αποτελούν μερικά αριθμητικά προβλήματα στα
οποία πρέπει να είμαστε περισσότερο προσεκτικοί. Σε κάθε περίπτωση όμως θα κάνουμε σαφές
τι επιλέγουμε για μέγεθος του προβλήματος που εξετάζουμε. Περισσότερα για το θέμα αυτό
αναφέρονται στο Κεφάλαιο 2.
Ας επανέλθουμε τώρα στην συνάρτηση η ( η — 1)/2 που όπως είπαμε είναι η συνάρτηση
πολυπλοκότητας του αλγορίθμου bubblesort και ας υπολογίσουμε τον αριθμό τω ν συγκρίσεω ν
που θα κάνει ο αλγόριθμος μας για τρια διαφορετικού μεγέθους προβλήματα όπως φαίνεται
στον παρακάτω πίνακα:
η η ( η — 1)/2
10 45~~
100 4950
10000 49995000
Π ίνακας 1.1: Πλήθος συγκρίσεω ν του αλγορίθμου της Φυσαλλίδας για τρία διαφορετικού
μεγέθους προβλήματα Ταξινόμησης
Μια παρατήρηση του πίνακα αυτού φανερώνει ότι ο αριθμός τω ν συγκρίσεω ν που υπολογίζουμε
όσο το η αυξάνει, εξαρτάται περισσότερο από τον τετραγωνικό προσθετέο η 2/2 παρά από τον
γραμμικό — η/2. Πραγματικά αν είχαμε σαν συνάρτηση πολυπλοκότητας την η 2/2, η διαφορά
από την πραγματική συνάρτηση γίνεται αμελητέα για μεγάλα η. Στην Θεωρία Αλγορίθμων
(και ακόμη περισσότερο στην Θεωρία Πολυπλοκότητας) συνήθως αμελούμε τους μικρότερους
προσθετέους και περιοριζόμαστε σε αυτόν που κυριαρχεί για μεγάλα στιγμιότυπα του προβλή
ματος, αυτόν που δείχνει τον ρυθμό αύξησης της συνάρτησης όταν αυξάνει το η. Στο ίδιο
πλαίσιο μπορούμε να προχωρήσουμε αυτές τις σκέψεις και να παρατηρήσουμε ότι και ο συ
ντελεστής 1/2 του η 2 μπορεί να παραληφθεί σε μια πρώτη εκτίμηση της πολυπλοκότητας ενός
αλγορίθμου (που όμως είναι και πολύ συνηθισμένη στην θεωρητική μελέτη τω ν αλγορίθμων).
Αυτό που περισσότερο ενδιαφέρει από την συνάρτηση πολυπλοκότητας ενός αλγορίθμου είναι
ο ρυθμός αύξησης του μέτρου πολυπλοκότητας που μας ενδιαφέρει, παρά η απόλυτη τιμή του.
Η γνώ ση του ρυθμού αύξησης μας αποκαλύπτει πλήρως το πως θα συμπεριφερθεί ο αλγόριθμος
μας για μεγάλα στιγμιότυπα, ενώ η ακριβής τιμή δεν είναι πάντα αξιοποιήσιμη. Για παράδειγ
μα, αν ο χρόνος είναι το μέτρο πολυπλοκότητας, η απόλυτη τιμή (σε δευτερόλεπτα) εξαρτάται
και από την ταχύτητα της μηχανής μας κάτι που ως γνω στό η τεχνολογική πρόοδος αλλάζει
ραγδαία. Για τον λόγο αυτό συνηθίζεται να αναφέρουμε σαν συνάρτηση πολυπλοκότητας μό
νο τον κυρίαρχο όρο. Έ τσ ι λέμε ότι ο αλγόριθμος bubblesort είναι τετραγωνικός. Πάντως
πρέπει να αναφερθεί ότι ενώ η πρακτική αυτή είναι ο κανόνας, δεν λείπουν και οι εξαιρέσεις
κυρίως σε πρακτικά προβλήματα και αλγορίθμους με «μικρές» συναρτήσεις πολυπλοκότητας.
Η ταξινόμηση είναι ένα τέτοιο πρόβλημα και ο αναγνώ στης μπορεί να βρεί ιδιαίτερα προσε
κτικές αναλύσεις πολλών διαφορετικών αλγορίθμων για το πρόβλημα της ταξινόμησης στο
14. 6 ΚΕΦΑΛΑΙΟ 1. ΕΙΣΑΓΩΓΗ
κλασσικό βιβλίο του Donald Knuth ([15]). Στο επόμενο κεφάλαιο, όπου θα δωθεί και το
αυστηρό μαθηματικό μοντέλο του υπολογιστή μας, η μηχανή Turing, θα δωθεί και θεωρητική
εξήγηση για αυτή την επιλογή. Επί του παρόντος δίδουμε μερικούς αυστηρούς μαθηματικούς
συμβολισμούς με την βοήθεια τω ν οποίων θα περιγράφουμε τις επιδόσεις τω ν αλγορίθμων μας,
αλλά και την πολυπλοκότητα τω ν προβλημάτων μας.
Ο ρισμ ός 1.1 Έστω σ υ ν ά ρ τ η σ η g απ ό το σ ύ νο λο των θετικών ακ ερ αίω ν σ τ ο σ ύ νο λο των
θετικών ακεραίων.
1. Ο ρ ίζ ο υμ ε ως 0 ( g ( n ) ) το σ ύ νο λο των σ υ ν α ρ τ ή σ ε ω ν
0 ( g ( n ) ) = {f ( n ) : υπάρχουν θ ετ ικ ές σ τ α θ ε ρ έ ς c και η 0 έτσι ώ σ τ ε
0 ^ f ( n ) ^ c g ( n ) γ ι α κάθε n > η0}.
2. Ο ρ ίζο υμ ε ως 0 ( g ( n ) ) το σ ύ νο λο των σ υ ν α ρ τ ή σ ε ω ν
0 ( g ( n ) ) = {f ( n ) : υπάρχουν θ ετ ικ ές σ τ α θ ε ρ έ ς c i,c 2, και η 0 έτσι ώ σ τ ε
0 ^ c i g ( n ) ^ f ( n ) ^ c2g ( n ) Υ ια χ άθ ε n > η0}.
3. Ο ρ ίζ ο υμ ε ως Ω ^ ( η ) ) το σ ύ νο λο των σ υ ν α ρ τ ή σ ε ω ν
Ω ^ ( η ) ) = {f ( n ) : υπάρχουν θ ετ ικ ές σ τ α θ ε ρ έ ς c και η 0 έτσι ώ σ τ ε
0 < c g ( n ) < f ( n ) γ ι α κά θε n > η0}.
4· Ο ρ ίζ ο υμ ε ως o ( g ( n ) ) το σ ύ νο λο των σ υ ν α ρ τ ή σ ε ω ν
o ( g ( n ) ) = {f ( n ) f '(^0
: f ( n ) < g ( n ) γ ι α π ε π ε ρ α σ μ έ ν ο α ρ ιθ μ ό η και lim — y = 0}
-—
Μια συνάρτηση f ( n ) ανήκει στο σύνολο τω ν συναρτήσεων 0 ( g ( n ) ) εάν υπάρχουν θετικοί
ακέραιοι Ci και c2 έτσι ώστε η f ( n ) να φράσσεται κάτω και άνω από τις συναρτήσεις Ci g(n)
και c 2g ( n ) αντίστοιχα, για ικανοποιητικά μεγάλες τιμές του η. Αν και το 0 ( g ( n ) ) είναι
σύνολο, θα γράφουμε «/(^) = 0 ( g ( n ) ) » για να δηλώσουμε ότι η συνάρτηση / είναι μέλος του
συνόλου 0 ( g ( n ) ) και θα λέμε ότι η g είναι ένα α σ υ μ π τ ω τ ικ ά άνω και κάτ ω φ ρ ά γ μ α της /. Με
άλλα λόγια, οι συναρτήσεις / και g έχουν ακριβώς τον ίδιο ρ υ θ μ ό α ύ ζη σης.
Ο συμβολισμός 0 ( g ( n ) ) δίνει ένα α σ υ μ π τ ω τ ικ ά άνω φ ρ ά γ μ α για την συνάρτηση /. θα
γράφουμε f ( n ) = 0 ( g ( n ) ) και θα λέμε ότι η / είναι τά ζ η ς g. Με άλλα λόγια, f ( n ) = 0 ( g ( n ) )
σημαίνει ότι η ο ρυθμός αύξησης της / είναι μικρότερος ή ίδιος με τον ρυθμό αύξησης της
g. Θα γράφουμε f ( n ) = Ω ^ ( η ) ) όταν συμβαίνει το αντίθετο, δηλαδή όταν g ( n ) = 0 (/ (n )).
Τέλος αν f ( n ) = o ( g ( n ) ) η f ( n ) έχει ρυθμό αύξησης μεγαλύτερο της g ( n) .
Χρησιμοποιούμε τους παραπάνω συμβολισμούς για να περιγράφουμε την επίδοση τω ν αλγο
ρίθμων μας αλλά και την πολυπλοκότητα τω ν προβλημάτων μας. Για παράδειγμα, η συνάρτηση
χρόνου του αλγορίθμου bubblesort είναι τάξης 0 ( η 2).
15. 1.2. ΠΟΛΥΠΛΟΚΟΤΗΤΑ ΠΡΟΒΛΗΜΑΤΩΝ 7
1.2 Πολυπλοκότητα Προβλημάτων
0 αλγόριθμος bubblesort που περιγράψαμε για το πρόβλημα της ταξινόμησης δεν είναι ο μο
ναδικός αλγόριθμος για το πρόβλημα αυτό. Υπάρχουν αρκετοί αλγόριθμοι [15] και πολλοί από
αυτούς, όπως για παράδειγμα ο α λ γ ό ρ ι θ μ ο ς του σωρού (heapsort), συμπεριφέρονται καλύτε
ρα από το bubblesort. 0 αλγόριθμος heapsort για παράδειγμα έχει πολυπλοκότητα χρόνου
O (n lo gn ) δηλαδή σαφώς καλύτερη από το 0 ( η 2) του bubblesort. Το εύλογο ερώτημα που
προκύπτει είναι αν ο χρόνος O ( n l o g n ) μπορεί να βελτιωθεί ακόμη περισσότερο: αν δηλαδή
υπάρχει αλγόριθμος που μπορεί να ταξινομήσει η αριθμούς σε χρόνο μικρότερο από O ( n l o g n ) .
Πρέπει να τονιστεί ότι το ερώτημα αυτό είναι διαφορετικής φύσης από το πρόβλημα μελέτης
της πολυπλοκότητας κάποιου σ υ γ κ ε κ ρ ι μ έ ν ο υ αλγορίθμου (όπως κάναμε στην περίπτωση του
bubblesort): τώρα ζητάμε να μάθουμε την πολυπλοκότητα του κα λ ύ τ ε ρ ο υ δυνατού αλγόριθμου
για την ταξινόμηση μεταξύ όλων τω ν αλγορίθμων (γνω σ τώ ν και «μη γνω σ τώ ν») που επιλύουν
το συγκεκριμένο πρόβλημα. Η πολυπλοκότητα αυτή είναι και η π ολυ πλο κό τητ α χ ρ ό ν ο υ του
π ρο β λή μ α τ ος της τ α ξ ιν ό μ η σ η ς . Αντίστοιχα ορίζεται και η πολυπλοκότητα προβλημάτων για
άλλα μέτρα που μπορεί να ενδιαφέρουν. Για το πρόβλημα της ταξινόμησης ισχύει το παρακάτω
Θεώρημα η απόδειξη του οποίου μπορεί να βρεθεί για παράδειγμα στο [1]:
Θ εώρημα 1.1 Κ άθ ε α λ γ ό ρ ι θ μ ο ς που τ α ξ ι ν ο μ ε ί μ έ σ ω σ υ γ κ ρ ί σ ε ω ν χ ρ ε ιά ζ ε τ α ι O (nlogn) σ υ
γ κ ρ ί σ ε ι ς γ ι α να τ α ξ ι ν ο μ ή σ ε ι η σ τ ο ι χ ε ί α .
Αυτό που πραγματικά λέει το Θεώρημα 1.1 είναι ένα κάτ ω φ ρ ά γ μ α στην δυνατότητα μας να
ταξινομήσουμε η αριθμούς. Σε συνδυασμό όμως με ότι αναφέρθηκε για την ύπαρξη αλγορίθμου
που ασυμπτωτικά καταφέρνει να ταξινομήσει στον ίδιο χρόνο O (n lo gn ), καταλήγουμε ότι η
πολυπλοκότητα του προβλήματος της ταξινόμησης είναι O (n lo gn ). Είναι όμως αναγκαίο να
τονιστούν ορισμένα πράγματα ως προς την σημασία του παραπάνω θεωρήματος και τα όρια
του: το Θεώρημα 1.1 δείχνει ότι σε κάποιο σ υ γ κ ε κ ρ ι μ έ ν ο π λ α ίσ ιο (κάποιες υποθέσεις) δεν
είναι δυνατό να ταξινομηθούν η αριθμοί σε χρόνο καλύτερο από 0 { n o g n ) . Το πλαίσιο αυτό
καθορίζει ότι εργαζόμαστε σε ένα βασικό σύνολο στο οποίο υπάρχει μία μερική διάταξη και
στο οποίο η μοναδική δυνατότητα που έχουμε είναι να αποφανθούμε μεταξύ δύο στοιχείων
ποιό προηγείται. Στο πλαίσιο αυτό, το οποίο είναι αρκετά ρεαλιστικό, πράγματι ισχύει το
παραπάνω αποτέλεσμα. Υπάρχουν όμως περιπτώσεις όπου υπάρχουν περισσότερες δυνατότητες
για το αλγόριθμο μας. Για παράδειγμα αν υποθέσουμε ότι οι αριθμοί είναι «μικροί» (μέσα σε
κάποιο διάστημα, έστω 1 έως to) τότε μπορούμε να τα καταφέρουμε ακόμη καλύτερα και
να ταξινομήσουμε η αριθμούς σε γραμμικό χρόνο Ο [η + to). 0 αλγόριθμος αυτός λέγεται
Bucketsort
Το Θεώρημα 1.1 περιγράφει την πολυπλοκότητα κάποιου προβλήματος. Πρόκειται για ένα
ιδιαίτερα ακριβές αποτέλεσμα, το οποίο εξήχθη με μεθόδους απόλυτα προσαρμοσμένες στο
συγκεκριμένο πρόβλημα. Δ υσ τυχ ώ ς τέτοιου είδους ακριβή αποτελέσματα είναι πολύ δύσκολο
να εξαχθούν και κατά συνέπεια είναι πολύ λίγα στην Θεωρία Π ολυπλοκότητας. Αναγκαζόμα
στε λοιπόν να χρησιμοποιήσουμε άλλες μεθόδους, περισσότερο γενικ ές, που δίνουν κατά βάση
ένα χαρακτηρισμό του προβλήματος παρά ένα ακριβές κάτω φράγμα. Αυτές οι μέθοδοι είναι
το αντικείμενο τω ν επομένων κεφαλαίων.
17. Κεφάλαιο 2
Η Μηχανή Turing
Στο προηγούμενο κεφάλαιο περιγράψαμε με την βοήθεια μιας ψευδογλώσσας έναν αλγόριθμο
για το πρόβλημα της ταξινόμησης. Το «τρέξιμο» αυτού του αλγορίθμου, αφέθηκε να εννοηθεί
ότι θα γίνει σε ένα υπολογιστή ο οποίος είναι σε θέση να εκτελέσει προγράμματα μιας γλώ σσας
που ομοιάζει με την Pascal. Είναι γνω στό ότι όλοι οι υπολογιστές μπορούν να εκτελέσουν
παρόμοιες εντολές. Ιδού όμως μια ενδιαφέρουσα προοπτική. Θα ήταν άραγε δυνατό να υπάρχει
κάποια υπολογιστική μηχανή με εξαιρετικές ιδιότητες για την οποία θα μπορούσε να γραφεί
ένας αλγόριθμος με πολύ καλύτερες επιδόσεις από τους γνω σ τούς; Με άλλα λόγια, ποιά είναι τα
όρια που μπορεί να φτάσει ο (μηχανιστικός) υπολογισμός; Πέρα όμως από αυτό, είναι ανάγκη
εφόσον στόχος μας είναι η αυστηρά μαθηματική μελέτη τω ν υπολογιστικώ ν προβλημάτων και
τω ν αλγορίθμων να καταλήξουμε σε κάποιο αυστηρό μοντέλο υπολογιστικής μηχανής στο
οποίο θα γίνονται οι μετρήσεις τω ν αναγκαίω ν υπολογιστικώ ν πόρων με εννιαίο τρόπο. Το
μοντέλο αυτό θα πρέπει να συνδυάζει τα παρακάτω χαρακτηριστικά: Πρώτον, θα πρέπει να
είναι αρκετά κοντά στους πραγματικούς (ρεαλιστικούς) υπολογιστές ώστε τα αποτελέσματα
που θα παίρνουμε από την μαθηματική ανάλυση στο μοντέλο μας να είναι μεταφέρσιμα στις
πραγματικές μηχανές. Και δεύτερον, θα πρέπει να είναι ιδιαίτερα απλό ώστε η ανάπτυξη
της θεωρίας μας να είναι απλή. Κατά παράδοξο τρόπο η απάντηση και στα δύο ερωτήματα
που τέθηκαν, είναι κοινή. Το μαθηματικό μοντέλο το οποίο έχει υιοθετηθεί στην Θεωρία
Π ολυπλοκότητας είναι η μ η χ α ν ή Turing η οποία είναι ένα εντυπωσιακά απλό μοντέλο, ιδιαίτερα
κατάλληλο για την ανάπτυξη της θεωρίας μας που αποδεικνύεται όμως ότι παρέχει όλη την
δυνατή υπολογιστική ισχή που μπορεί να έχει ο μηχανιστικός υπολογισμός και μάλιστα με
επιδόσεις αρκετά κοντά σε αυτές τω ν ρεαλιστικών υπολογιστών.
2.1 Περιγραφή - Ορισμός
Η μηχανή Turing προτάθηκε από τον Alan Turing [30] σαν ένα μοντέλο υπολογισμού και είναι
μια μηχανή που επιδρά σε σύ μβ ολ α. Τα σύμβολα που μπορεί να διαχειριστεί μία μηχανή Turing
είναι στοιχεία ενός πεπερασμένου συνόλου συμβόλων που ονομάζεται αλφάβητο. Μία ακολου
θία από σύμβολα του αλφαβήτου μας αποτελεί μια λ έ ζ η ή σ υ μ β ο λ ο σ ε ιρ ά . Τέλος, ένα σύνολο
συμβολοσειρών αποτελεί μια γ λώ σσ α. Τα σύμβολα της μηχανής μπορούμε να θεωρήσουμε ότι
είναι γραμμένα σε μια «ταινία» που έχει άπειρο μήκος και προς τις δύο κατευθύνσεις (μοιάζει
9
18. 10 ΚΕΦΑΛΑΙΟ 2. Η ΜΗΧΑΝΗ TURING
Σχήμα 2.1: Σχηματική αναπαράσταση της μηχανής Turing
δηλαδή με την γεωμετρική ευθεία). Η ταινία χωρίζεται σε «κύτταρα», σε κάθε ένα από τα οποία
μπορεί να εγγράφει ένα σύμβολο. Η μηχανή μπορεί να διαβάζει ή να γράφει ένα σύμβολο σε
κάθε κίνηση της μέσω μιας κ ε φ α λ ή ς ανάγνωσης/εγγραφής. Μια κίνηση της μηχανής Turing
είναι συνδυασμός δύο πραγμάτων: του συμβόλου που βρίσκεται την χρονική στιγμή πριν από
την κίνηση στο κύτταρο κάτω από την κεφαλή και της τρέχουσας κ α τ ά σ τ α σ η ς στην οποία
βρίσκεται η μηχανή μας. Μια κατάσταση μπορεί να ειδωθεί σαν ένα σ τ ο ι χ ε ί ο μ ν ή μ η ς χαι κάθε
μηχανή Turing έχει ένα πεπερασμένο σύνολο από καταστάσεις. Μια σχηματική παράσταση
της μηχανής Turing φαίνεται στο Σχήμα 2.1. Παρατηρούμε την ταινία της μηχανής καθώς
και την κεφαλή εγγραφής/ανάγνωσης. Στο τετράγωνο πλαίσιο θεωρούμε ότι βρίσκονται οι
καταστάσεις καθώς και ο μηχανισμός που αποφασίζει τις κινήσεις της μηχανής μας, όπως
λέχθηκε σαν συνδυασμός της τρέχουσας κατάστασης και του συμβόλου που βρίσκεται κάτω
από την κεφαλή. Αυτός όλος ο μηχανισμός συνιστά τον π ε π ε ρ α σ μ έ ν ο έλ εγχ ο της μηχανής.
Τι είναι όμως μια κίνηση της μηχανής Turing; Πολύ απλά μια κίνηση της μηχανής Turing
συνίσταται στην αλλαγή του συμβόλου που βρίσκεται κάτω από την κεφαλή με κάποιο άλλο,
στην εν συνεχεία κίνηση της μία θέση αριστερά ή δεξιά και στην αλλαγή της κατάστασης της.
Τα παραπάνω πρέπει φυσικά να ειδωθούν σαν μια «μηχανοποιημένη» περιγραφή της μηχανής
Turing η οποία είναι ένα μαθηματικό αντικείμενο, χωρίς ταινίες, κεφαλές κλπ., βοηθούν όμως
στην κατανόηση του μοντέλου μας. Στην συνέχεια δίνεται ο μαθηματικός ορισμός της μηχανής
Turing. Πριν όμως από αυτό χρήσιμο είναι να συμπληρώσουμε την περιγραφή με ορισμένες
ακόμη λεπτομέρειες. Πρέπει να λεχθεί ότι σε αυτές τις λεπτομέρειες υπάρχουν διαφορές στην
βιβλιογραφία στον τρόπο που ορίζονται. Οι διαφορές αυτές είναι επουσιώδεις και με κανένα
τρόπο δεν επηρεάζουν την συμπεριφορά του μοντέλου μας για τον σκοπό που το ορίσαμε. Έ τσι
πρέπει να κάνουμε μια σύμβαση για το πως δίνουμε την είσοδο στην μηχανή και πως αρχίζει
ο υπολογισμός, θεω ρούμε λοιπόν ότι υπάρχει ένα ειδικό σύμβολο το το οποίο υπάρχει σε
>
κάποιο κύτταρο και αμέσως δεξιά από αυτό τοποθετείται η συμβολοσειρά εισόδου (η είσοδος
στην μηχανή μας). Ό λα τα κύτταρα που δεν περιέχουν κάποιο άλλο σύμβολο, θεωρείται
ότι περιέχουν το κ ε ν ό } . Η κεφαλή της μηχανής πριν την αρχή του υπολογισμού θεωρείται
>
ότι βρίσκεται πάνω από το > Η μηχανή πριν από την αρχή του υπολογισμού βρίσκεται σε
.
μια ειδική κατάσταση που την συμβολίζουμε με το s και ονομάζεται α ρ χ ι κ ή κ α τ ά σ τ α σ η . Η
μηχανή σταματά όταν βρεθεί σε μια από τις καταστάσεις h, ^ναι, <?οχι· Η πρώτη ονομάζεται
κατάσταση τερματισμού, ενώ οι άλλες δύο, πέρα από το τέρμα του υπολογισμού, σηματοδοτούν
19. 2.1. ΠΕΡΙΓΡΑΦΗ ΟΡΙΣΜΟΣ 11
η μεν πρώτη (κατάσταση «ΝΑΙ») την α π ο δ ο χ ή της εισόδου, η δε δεύτερη (κατάσταση «ΟΧΙ»)
την α π ό ρ ρ ιφ η της εισόδου.
Ο ρισμ ός 2.1 Μ ια μ η χ α ν ή Turing Μ είναι μ ί α δ ια τ ε τ α γ μ έ ν η τετ ράδα Μ = ( Κ , Σ , δ , β ) . Το
Κ είναι το π ε π ε ρ α σ μ έ ν ο σ ύ νο λο κ α τ α σ τ ά σ ε ω ν . Το Σ είναι το π ε π ε ρ α σ μ έ ν ο αλ φ άβ ητο της
μ η χ α ν ή ς , δ η λ α δ ή το σ ύ νο λο των συ μβ όλ ω ν που μ π ο ρ ο ύ ν να ε μ φ α ν ι σ τ ο ύ ν σ τ η ν τ α ιν ία της. Το
Σ πάντα περιέχ ει τα δ ύο σ ύ μ β ο λ α και (κ ενό ). To s £ Κ είναι η α ρ χ ι κ ή κ α τ ά σ τ α σ η .
> >
Τέλος το δ : Κ χ Σ — ( Κ U {h , <?ναι, <Ζοχι)} χ Σ χ
>■ , — , — είναι η σ υ ν ά ρ τ η σ η μ ε τ ά β α σ η ς
> }
της μη χ α ν ή ς .
Στον ορισμό μας υποθέτουμε ότι οι τρείς καταστάσεις τερματισμού δεν είναι στοιχεία του Κ .
Παρόμοια, τα τρία σύμβολα δεν είναι στοιχεία του Σ. Η συνάρτηση δ προσδιορίζει
τις κινήσεις που μπορεί να κάνει η μηχανή. Ό πω ς ήδη λέχθηκε, μια κίνηση εξαρτάται από
δύο πράγματα: την τρέχουσα κατάσταση και το σύμβολο κάτω από την κεφαλή. 0 συνδυα
σμός αυτών τω ν δύο παραμέτρων μονοσήμαντα προσδιορίζει την κίνηση της μηχανής, δηλαδή
την επόμενη κατάσταση, το σύμβολο που θα αντικαταστήσει αυτό που είναι κάτω από την
κεφαλή και την κίνηση της κεφαλής αριστερά, δεξιά ή στάσιμη. Αυτό ακριβώς προσδιορίζει η
συνάρτηση δ. Για κάθε q £ Κ και σ £ Σ καθορίζει την τριάδα <5(^,σ) = σ', D), δηλαδή
την επόμενη κατάσταση, το επόμενο σύμβολο και την κίνηση D της κεφαλής αντίστοιχα. Το
D είναι στοιχείο του συνόλου Μία επιπλέον σύμβαση είναι ότι η συνάρτηση δ
είναι τέτοια που ποτέ το σύμβολο δεν σβήνεται και επιπλέον δεν επιτρέπει στην κεφαλή
>
να κινηθεί αριστερά του. Η δ μπορεί να ειδωθεί σαν το «πρόγραμμα» της μηχανής. Η μόνη
διαφορά από τα γνω σ τά προγράμματα (πέρα ίσως από το περιορισμένο ρεπερτόριο εντολών)
είναι ότι είναι αμετάβλητο για μια δεδομένη μηχανή Turing, σε αντίθεση με τους υπολογιστές
που παρέχουν την ευχέρεια να αλλάζουμε την συμπεριφορά τους αλλάζοντας το πρόγραμμα
που τρέχουν. Σύντομα όμως θα διαπιστώσουμε ότι και αυτό το «μειονέκτημα» τω ν μηχανών
Turing μπορεί να διορθωθεί.
Η μηχανή αρχίζει τον υπολογισμό της έχοντας τοποθετημένη την κεφαλή της στο σύμβολο
[>, ενώ δεξιά της βρίσκεται η συμβολοσειρά εισόδου x £ (Σ {!?})*· (Εδώ παρατηρούμε ότι
το κενό σύμβολο δεν μπορεί να είναι στοιχείο της εισόδου.) Στην συνέχεια η μηχανή ακο-
λουθόντας τις μεταβάσεις που προβλέπει η συνάρτηση δ κάνει διαδοχικές κινήσεις αλλάζοντας
καταστάσεις, αλλάζοντας σύμβολα και κινόντας την κεφαλή μέχρι (πιθανώς) να συναντήσει
μία από τις τρείς καταστάσεις Λ,^ναι ή qoxi οπότε σταματά. Σε αυτές τις περιπτώσεις η έ ξ ο
δ ο ς (απάντηση) της μηχανής με είσοδο χ συμβολίζεται με Μ ( χ ) και είναι Μ( χ ) = «ΝΑΙ» αν η
τελευταία κατάσταση είναι η ^ναι, Μ ( χ ) = «ΟΧΙ» αν η τελευταία κατάσταση είναι η qoxi xoti
τέλος αν η τελευταία κατάσταση είναι η Λ, η έξοδος είναι ότι γράφει η ταινία της Μ , έστω η
συμβολοσειρά ΐ/, από το σύμβολο μέχρι το σύμβολο μετά το οποίο αρχίζει η άπειρη σειρά
>
τω ν κενώ ν. Εφόσον η μηχανή έχει κάνει πεπερασμένο αριθμό κινήσεω ν, αναγκαστικά πρέπει
να υπάρχει κάποιο τέτοιο σύμβολο. Σε τέτοια περίπτωση γράφουμε Μ ( χ ) = y. Είναι πιθανό
όμως η μηχανή μας να μην φθάσει ποτέ σε μία από τις τρείς καταστάσεις τερματισμού οπότε
λέμε ότι α π οκ λίνει στο χ. Σε τέτοια περίπτωση γράφουμε Μ( χ ) ="|
Μία πολύ χρήσιμη έννοια στην παρακολούθηση της λειτουργίας μιας μηχανής Turing είναι η
έννοια της δ ια μ ό ρ φ ω σ η ς (configuration) ή σ τ ι γ μ ι α ί α ς π εριγραφή ς (instantaneous description).
Δ ιαισθητικά η διαμόρφωση είναι το σύνολο τω ν πληροφοριών που μονοσήμαντα προσδιορίζουν
21. 2.1. ΠΕΡΙΓΡΑΦΗ ΟΡΙΣΜΟΣ 13
Στη συνέχεια δίνουμε ένα παράδειγμα μιας μηχανής Turing η οποία με είσοδο μια συμβολο
σειρά χ δεν τερματίζει με «ΝΑΙ» ή «ΟΧΙ» αλλά δίνει σαν έξοδο μια συμβολοσειρά y:
Π α ρ ά δ ειγμ α 2.2 Έ σ τω η μηχανή Turing Μ = ( Κ , Σ , δ , β ) όπου Σ = { t>, t>,α,δ}, Κ =
{s,p}, και δ η συνάρτηση μετάβασης που ορίζεται σύμφωνα με τον παρακάτω πίνακα:
q σ % ,σ )
■
S > (s, t>, — ) >
■
S a (P, b , - )
■
S b (p,a,- )
■
S b ( M ,- )
P a (s, a, — )>
V b (s , & — )
, >
V b (55b ,— )
Ας δούμε τις μεταβάσεις της μηχανής Μ με είσοδο, για παράδειγμα την συμβολοσειρά aabab:
(s, t>, aabab) s , [>α, abab)
ρ, t>& abab)
,
5, >ba}bab)
p, t>bb}bab)
5, >bbb}ab)
p, >bba}ab)
5, >bbaa}b)
p, >bbab}a)
s, >bbabb, b)
p, >bbaba}t>)
s, >bbaba, t>
> )
h, >bbaba, b)
>
Βλέπουμε λοιπόν ότι με είσοδο την συμβολοσειρά a a b a b } η μηχανή Μ τερματίζει μετά από
έναν αριθμό βημάτων και δίνει σαν έξοδο την συμβολοσειρά bbaba, δηλαδή την συμβολοσειρά
εισόδου αντεστραμένη. Επαναλαμβάνοντας για ένα-δυο ακόμα παραδείγματα, εύκολα φτά
νουμε στο συμπέρασμα ότι η λειτουργία της συγκεκριμένης μηχανής είναι να αντιστρέφει
οποιαδήποτε είσοδο της.
Π αρατήρηση 2.1 Μια πολύ χρήσιμη τεχνική για τον σχεδιασμό μηχανών Turing, είναι να
χρησιμοποιούμε τον πεπερασμένο έλεγχο, (τις καταστάσεις) για την αποθήκευση σταθερού
μεγέθους πληροφοριών. Έ τσ ι αν έχουμε σχεδιάσει μερικώς μια μηχανή που εκτελεί κάποια
λειτουργία και θέλουμε επιπλέον να απομνημονεύσει την τιμή ενός bit, μπορούμε να κάνουμε
δύο αντίγραφα τω ν καταστάσεω ν με τις ίδιες μεταβάσεις, στο ένα από τα οποία η τιμή του
22. 14 ΚΕΦΑΛΑΙΟ 2. Η ΜΗΧΑΝΗ TURING
bit είναι 1 και στο άλλο 0. Φυσικά αν 2 bit πρέπει να απομνημονευτούν, 4 αντίγραφα των
καταστάσεω ν χρειάζονται κλπ. Η μεγάλη αύξηση του αριθμού τω ν καταστάσεω ν δεν ενοχλεί
στο βαθμό που ο αριθμός τους παραμένει ανεξάρτητος της εισόδου.* Θα κάνουμε ευρεία χρήση
αυτής της τεχνικής στα θεωρήματα που αποδεικνύονται στο επόμενο κεφάλαιο.
Ο αναγνώ στης μπορεί να αναρωτηθεί ποιά η ανάγκη να έχουμε δύο τρόπους «φυσιολογικού»
τερματισμού ενός υπολογισμού, δηλαδή μέσω αποδοχής (ή απόρριψης) και μέσω υπολογισμού
μιας συμβολοσειράς εξόδου. Ο λόγος είναι να έχει το μοντέλο μας την δυνατότητα να χρησι
μοποιείται είτε σαν α ν α γ ν ω ρ ι σ τ ή ς γ λ ω σ σ ώ ν , όπως στο παράδειγμα 2.1, δηλαδή να αποφαίνεται
αν μια δοθείσα συμβολοσειρά χ ανήκει ή όχι σε μια γλώ σσα L, είτε σαν υπολογιστής συναρτή
σεων, όπως στο παράδειγμα 2.2. Η πρώτη χρήση του μοντέλου μας είναι ιδιαίτερα κατάλληλη
για τα λεγόμενα προβλήματα α π ό φ α σ η ς δηλαδή προβλήματα στα οποία η απάντηση είναι «ΝΑΙ»
ή «ΟΧΙ». Η δεύτερη χρήση είναι κατάλληλη και για προβλήματα με συνθετότερη απάντηση.
Φυσικά θα μπορούσαμε να χρησιμοποιούσαμε μόνο τον δεύτερο τρόπο και να βάζαμε την
μηχανή μας να δώσει μια ρητή απάντηση (δηλαδή ένα ναί ή ένα όχι) στην ταινία της και να
αποφεύγαμε την χρήση τω ν καταστάσεω ν ^ναι και <?οχι· Επειδή όμως τα προβλήματα απόφα
σης είναι εξαιρετικά μεγάλης σημασίας για την θεω ρία Πολυπλοκότητας, ο παρών ορισμός της
μηχανής Turing αποδεικνύεται ιδιαίτερα βολικός. Πιο κάτω δίδονται ακριβείς ορισμοί αυτών
τω ν εννοιών.
Ο ρισμ ός 2.2 Έστω L C (Σ {>})* μ ί α γλ ώ σ σ α . Αν μ ί α μ η χ α ν ή Turing Μ είναι τ έ τ ο ι α ώ σ τ ε
γ ι α κά θε σ υ μ β ο λ ο σ ε ι ρ ά x £ L, Μ( χ ) = ^ναι χ& γ ι α κά θε σ υ μ β ο λ ο σ ε ι ρ ά χ ^ L, Μ( χ ) = qoxi,
ι
τό τε λ έ μ ε ότι η Μ απ οφ ασίζ ει τη ν Τ. Αν μ ί α μ η χ α ν ή Turing Μ είναι τ έ τ ο ι α ώ σ τ ε γ ι α κάθε
σ υ μ β ο λ ο σ ε ι ρ ά x £ L, Μ( χ ) = ^ναι χ& γ ι α κάθε σ υ μ β ο λ ο σ ε ι ρ ά χ ^ L, Μ( χ ) =^; τό τε λ έμ ε
ι
ότι η Μ απ οδέχετα ι τη ν Τ.
Ο ρισμ ός 2 .3 Αν γ ι α μ ί α Βοθείσ α γ λ ώ σ σ α υπάρχει μ η χ α ν ή Turing που να τη ν απ οφ ασ ίζ ει,
τό τε λ έ μ ε ότι η γ λ ώ σ σ α είναι α ν α δ ρ ο μ ικ ή . Παρόμοια, αν γ ι α μ ί α γ λ ώ σ σ α υπάρχει μ η χ α ν ή
Turing που να τη ν αποδέχεται, τό τε λ έ μ ε ότι η γ λ ώ σ σ α είναι α ν α δ ρ ο μ ι κ ά α ρ ιθ μ ή σ ιμ η .
Είναι σημαντικό να επισημανθεί η διαφορά στο βαθμό αλγοριθμικής προσέγγισης που υπάρχει
μεταξύ μιας αναδρομικής και μιας αναδρομικά αριθμήσιμης γλώ σσας. Στην πρώτη περίπτωση
έχουμε στην διάθεση μας μια υπολογιστική μηχανή που μπορεί σε πεπερασμένο χρόνο να απο
φασίσει αν μια οποιαδήποτε συμβολοσειρά στο αλφάβητο μας ανήκει ή όχι στην γλώ σσα μας.
Στην δεύτερη περίπτωση υπάρχει μία α σ υ μ μ ε τ ρ ί α μεταξύ τω ν συμβολοσειρών που ανήκουν
και αυτών που δεν ανήκουν στην γλώ σσα. Σαφή γνώ ση μπορούμε να έχουμε μόνο για τις
συμβολοσειρές που ανήκουν διότι στην αντίθετη περίπτωση ποτέ δεν είμαστε σε θέση να απο-
φανθούμε ότι περιμέναμε αρκετά και άρα να συμπεράνουμε ότι η μηχανή μας δεν πρόκειται να
αποδεχθεί την συμβολοσειρά εισόδου. Έ τσ ι α λ γ ό ρ ι θ μ ο για το πρόβλημα του κατά πόσον μια
συμβολοσειρά x ανήκει σε μια γλώ σ σ α L, θεωρούμε ότι έχουμε μόνο στην πρώτη περίπτωση,
*Σ την π ρ α γ μ α τ ικ ό τ η τ α μόνο π ο λ λ α π λ α σ ια σ τ ικ ή και όχι ε κ θ ετικ ή α ύξη σ η σ τ ο ν αριθμό τ ω ν κ α τ α σ τ ά σ ε ω ν
είναι απαραίτητη, όμως η σ χ εδ ία ση είναι πολύ δυσκ ο λό τερ η και η λ ε ιτ ο υ ρ γ ία της μηχανής πολύ λ ιγ ώ τ ε ρ ο
κα τα νο η τ ή . Οι τ ε χ ν ικ έ ς που χ ρ η σ ιμ οπ ο ιο ύνται α να π τ ύ χ θ η κ α ν σε ένα τ ε λ ε ίω ς διαφο ρ ετικό χώρο, α υ τό ν της
ψηφιακής σχεδίασης.
23. 2 . 2 . ΠΑΡΑΣΤΑΣΗ Κ Α Ι ΜΕΓΕΘΟΣ ΠΡΟΒΛΗΜΑΤΩΝ 15
εκεί δηλαδή όπου και οι δύο πιθανές απαντήσεις (ναί και όχι) μπορούν να ληφθούν σε πεπε
ρασμένο χρόνο. Αντίθετα στην δεύτερη περίπτωση δεν θεωρούμε ότι το πρόβλημα επιλύεται
αλγοριθμικά.
Φυσικά αυτή η θεώρηση απαιτεί την ταύτιση της μηχανής Turing με την έννοια του αλγορίθ
μου κάτι που ίσως σε αυτό το στάδιο να φαίνεται περίεργο. Πραγματικά όμως, όσο πρωτόγονη
και αν φαίνεται η μηχανή Turing μπορεί να δειχθεί μέσω προσομοίωσης ότι υπολογίζει τα ίδια
ακριβώς προβλήματα με οποιοδήποτε άλλο μοντέλο έχει προταθεί στην ιστορία τω ν Μαθημα
τικώ ν και της Πληροφορικής για να συλλάβει την έννοια του μηχανιστικού υπολογισμού [14].
Αυτά τα αποτελέσματα οδήγησαν στην λεγόμενη Θέση του Church σύμφωνα με την οποία
αυτά τα ισοδύναμα υπολογιστικά μοντέλα (μεταξύ αυτών όπως ελέχθη και η μηχανή Turing)
ταυτίζονται με την έννοια του αλγορίθμου. Συνεπώς ένα πρόβλημα θα λέμε ότι επιλύεται αλγο-
ριθμικά (έχει αλγόριθμο) αν γ ι’ αυτό υπάρχει μία μηχανή Turing που να το επιλύει. Πρέπει
να πούμε ότι επί του παρόντος τα παραπάνω ισχύουν ως προς το ποιά προβλήματα επιλύει
η μηχανή Turing και όχι ως προς το πόσο αποδοτικά (γρήγορα ή οτιδήποτε άλλο μπορεί να
μας ενδιαφέρει). Ό πω ς θα δούμε όμως, ακόμα και ως προς την ταχύτητα η μηχανή Turing
δεν είναι πολύ μακριά (με κάποια θεωρητική έννοια που θα ορίσουμε) ακόμη και από τους
σύγχρονους υπολογιστές.
Ας επανέλθουμε τώρα στον άλλο τρόπο τερματισμού μιας μηχανής Turing μέσω της κα
τάστασης h. Σ ’ αυτή την περίπτωση η μηχανή μπορεί να χρησιμεύσει για τον υπολογισμό
συναρτήσεων (από συμβολοσειρές σε συμβολοσειρές).
Ο ρισμ ός 2 .4 Έστω f ( x ) : (Σ {!?})* — >Σ* μ ί α σ υ ν ά ρ τ η σ η απ ό σ υ μ β ο λ ο σ ε ι ρ έ ς ( σ τ ο αλ φ ά
β η τ ο Σ α λ λ ά χ ω ρ ί ς το κ ε ν ό σ ύ μ β ο λ ο ) σ ε σ υ μ β ο λ ο σ ε ιρ έ ς . Θα λέ μ ε ότι μ ι α μ η χ α ν ή Turing Μ
υπολογίζει τη ν / αν Μ( χ ) = f ( x ) γ ι α κάθε σ υ μ β ο λ ο σ ε ι ρ ά χ £ (Σ —{!?})*.
Φυσικά επειδή οι αριθμοί αλλά και άλλα μαθηματικά αντικείμενα μπορούν να παρασταθούν με
σύμβολα, είναι προφανές ότι μια μηχανή Turing μπορεί να υπολογίζει αριθμητικές συναρτήσεις
αλλά και γενικότερα συναρτήσεις από οποιοδήποτε σύνολο.
2.2 Παράσταση και μέγεθος προβλημάτων
Ό πω ς ήδη λέχθηκε ένα πρόβλημα απόφασης είναι ένα πρόβλημα στο οποίο οι πιθανές απα
ντήσεις είναι δύο: ναί ή όχι. Ορίζουμε τώρα ένα τέτοιο πρόβλημα απόφασης που θα μας
απασχολήσει ιδιαίτερα στην συνέχεια.
Ο ρισμ ός 2.5 Μ ια μ ε τ α β λ η τ ή B o o l e είναι μ ί α μ ε τ α β λ η τ ή η ο π ο ία μ π ο ρ ε ί να λάβει μ ό ν ο δύο
τιμ έ ς: α λ η θ ή ς (Τ) ή φ ευδή ς (F). Ε ισ ά γ ο υ μ ε ε π ί σ η ς τους τρ εις λ ο γ ι κ ο ύ ς τ ε λ ε σ τ έ ς V (r ή
διάζευξη ), Λ (και ή σύζευξη^) και -> (οχι ή άρνηση^). Έστω V έν α α ρ ι θ μ ή σ ι μ ο σύ νο λο
συ μβ όλ ω ν λ ο γ ι κ ώ ν με ταβλητώ ν. Μ ιά έ κ φ ρ α σ η B o o l e είναι μ ι α σ υ μ β ο λ ο σ ε ι ρ ά η ο π ο ία ορίζεται
σ τ ο αλ φάβ ητο V U { (,), V, Λ, ->} σ ύ μ φ ω ν α μ ε τους παρακάτω κ α ν ό ν ε ς : (1) κά θε σ τ ο ι χ ε ί ο του
V είναι έ κ φ ρ α σ η B o o l e και (2) αν x και y είναι ε κ φ ρ ά σ ε ι ς B o o l e τό τε είναι ε π ί σ η ς και οι
(χ V y ), (χ Λ y ) και -*χ. Τέλος μ ί α έ κ φ ρ α σ η B o o l e η μ ετ α β λ η τώ ν Χι, χ 2, . . . , xn , £ V ορίζει
μ ί α σ υ ν ά ρ τ η σ η η μετ α β λ η τώ ν f ( x ,. . . , χ η ) : {Τ, Έ}η — >{Τ, Έ} σ ύ μ φ ω ν α μ ε τους προ φ αν είς
κανόνες , όπου δ η λ α δ ή το «ή» δύο λ ο γ ι κ ώ ν μετ α β λ η τώ ν είναι α λ η θ ές αν τουλάχιστον μία από
24. 16 ΚΕΦΑΛΑΙΟ 2. Η ΜΗΧΑΝΗ TURING
α υ τ έ ς είναι αληθής, το «καί» αν και οι δύο είναι α λ η θ ε ίς και το «όχι» μ ι α ς μ ε τ α β λ η τ ή ς είναι
α λ ή θ ε ια αν και μ ό ν ο αν η μ ε τ α β λ η τ ή είναι φευδής.
Ο ρισμ ός 2 .6 Το πρόβλημα της ικανοποιησιμότητας (satisfiability p r o b l e m ή απ λά SATJ είναι
το πρόβλημα α π ό φ α σ η ς σ τ ο οποίο δίδεται μ ί α σ υ ν ά ρ τ η σ η B o o l e και ζη τε ίτ αι να π ρ ο σ δ ι ο ρ ι σ τ ε ί
αν υπάρχει α ν ά θ ε σ η λ ο γ ι κ ώ ν τιμώ ν σ τ ι ς μ ε τ α β λ η τ έ ς τη ς ( α π ο τ ίμ η σ η ) έτσι ώ σ τ ε η τ ι μ ή της
σ υ ν ά ρ τ η σ η ς να γίνει α λ η θ ή ς (Τ).
Θα ασχοληθούμε πολύ στην συνέχεια με τις δυσκολίες επίλυσης που παρουσιάζει το SAT. Επί
του παρόντος ας εξετάσουμε το τεχνικό πρόβλημα της παράστασης του SAT σαν είσοδο μιας
μηχανής Turing. Κατ’ αρχήν ο ορισμός τω ν στιγμιοτύπων του σαν συμβολοσειρών μας διευ
κολύνει κατά προφανή τρόπο στην παράσταση τους σαν είσοδο στην ταινία. Μια δυσκολία
είναι η εύρεση ενός εννιαίου τρόπου παράστασης αυθαίρετα μεγάλων στιγμιοτύπων μια και η
μηχανή Turing έχει εξ ’ ορισμού πεπερασμένο αλφάβητο και άρα κάποια στιγμή θα εξαντλη
θούν τα σύμβολα παράστασης τω ν μεταβλητών. Είναι όμως εύκολο να δωθεί λύση σαυτό το
πρόβλημα εισάγοντας «δείκτες» στον τρόπο παράστασης. Αυτό συνεπάγεται τον εμπλουτισμό
του αλφαβήτου της μηχανής με τα δέκα ψηφία 0..9 (αν χρησιμοποιούμε το δεκαδικό σύστημα
παράστασης). Για παράδειγμα η συνάρτηση Boole (xV ^ y ) f(^xV zV ^ y ) μπορεί να παρασταθεί
από την συμβολοσειρά (xlV ~ 'x2)A (-'xlV x2V -'x3).
Πάνω στις ίδιες ιδέες είναι εύκολο να δούμε ότι κάθε πρόβλημα μπορεί να παρασταθεί σαν
μια συμβολοσειρά πάνω σε ένα κατάλληλο αλφάβητο και συνεπώ ς να γίνει «νόμιμη» είσοδος
για μια μηχανή Turing. Σαν παράδειγμα αναφέρουμε τα προβλήματα στα οποία μέρος της
εισόδου είναι κάποιο γράφημα (πολλά τέτοια θα μας απασχολήσουν στην συνέχεια) και για τα
οποία απαιτείται κάποιος τρόπος για την παράσταση του γραφήματος. Ως γνω στό ένα γράφημα
G = (V, E) με η κ ό μ β ο υ ς (το σ ύ ν ο λ ο V), είναι μία διμελής σ χ έ σ η Ε (οι ακμές) πάνω στο
V. Έ να ς φυσικός τρόπος παράστασης είναι ασφαλώς με απλή παράθεση όλων τω ν ακμών του
γραφήματος την μία κατόπιν της άλλης. Έ να ς άλλος τρόπος είναι μέσω του π ίν ακα γ ε ι τ ν ί α σ η ς
του γραφήματος (ένας πίνακας n X η, όπου το στοιχείο i , j έχει τιμή 1 αν οι κόμβοι V και V i j
συνδέονται μεταξύ τους με ακμή και 0 διαφορετικά. Σε αυτό το τρόπο παράστασης πρέπει να
συμφωνηθεί κάποια σειρά, για παράδειγμα κατά στήλες. Και σε αυτό το πρόβλημα παράστασης
ισχύει ότι αναφέρθηκε για το SAT ως προς τους δείκτες τω ν κόμβων.
Ειδικά για τα προβλήματα απόφασης (όπως το SAT παραπάνω), οι δύο πιθανές απαντή
σεις που μπορούν να λάβουν («ΝΑΙ»-«ΟΧΙ») θυμίζει αμέσως το σχήμα αποδοχή-απόρριψη
μιας συμβολοσειράς από μια μηχανή Turing. Στην πραγματικότητα αυτό δεν είναι τυχαίο:
η μηχανή Turing σχεδιάστηκε για να διευκολύνει την αντιμετώπιση τέτοιω ν προβλημάτων.
Μπορούμε μάλιστα να παρατηρήσουμε ότι τα στιγμιότυπα στα οποία η απάντηση είναι «ΝΑΙ»
ενός προβλήματος απόφασης συνιστούν μια καλά ορισμένη γλώ σσα. Για παράδειγμα όλα τα
ικανοποιήσιμα στιγμιότυπα του SAT συνιστούν μια γλώ σσα (ας την συμβολίσουμε με T s a t )
στο αλφάβητο Σ = V U { (,), V, Λ, — Συνεπώς το πρόβλημα της εύρεσης αν μια συνάρτη
ση Boole /, είναι ικανοποιήσιμη είναι ισοδύναμο με το πρόβλημα του αν η συμβολοσειρά x j
ανήκει ή όχι στην γλώ σσα X sat, όπου x j είναι η συμβολοσειρά που κωδικοποιεί την /, ίσως
με τον τρόπο που περιγράψαμε παραπάνω. Ισχύει όμως και το αντίστροφο: μία οποιαδήποτε
γλώ σσα L σε ένα αλφάβητο Σ, ορίζει ένα πρόβλημα απόφασης δηλαδή το πρόβλημα στο οποίο
δίδεται μια συμβολοσειρά x £ Σ και ζητείται αν το χ £ L η όχι. Αυτό το είναι το πρόβλημα
25. 2.3. ΠΑΡΑΛΛΑΓΕΣ ΤΗΣ ΜΗΧΑΝΗΣ TURING 17
α π ό φ α σ η ς το σ χ ε τ ι ζ ό μ ε ν ο μ ε τη ν L. Εξαιτίας αυτής της άμεσης σχέσης προβλημάτων απόφα
σης και γλω σ σ ώ ν πολλές φορές θα μιλάμε για την γ λ ώ σ σ α του π ρο β λή μ α τ ος π.χ. την γλώ σσα
του SAT.
Η παράσταση τω ν στιγμιοτύπων ενός προβλήματος μέσω συμβολοσειρών, λύνει και το
πρόβλημα του αυστηρού ορισμού του μ ε γ έ θ ο υ ς του στιγμιοτύπου. Έ τσ ι έχουμε:
Ο ρισμ ός 2 .7 Ο ρ ίζ ο υμ ε ως μ έ γ ε θ ο ς εν ό ς σ τ ι γ μ ι ο τ ύ π ο υ εν ό ς υ π ο λ ο γ ι σ τ ι κ ο ύ π ρο β λή μ α τ ος το
μ ή κ ο ς τη ς σ υ μ β ο λ ο σ ε ι ρ ά ς (δ η λα δ ή το ν α ρ ιθ μ ό των χ α ρ α κ τ ή ρ ω ν της) η ο π ο ία το π α ρ ισ τ ά ν ει
σ ε κ ά π ο ι α σ ύ μ β α σ η π α ρά στασης .
0 αναγνώ στης μπορεί να παρατηρήσει ότι ο παραπάνω ορισμός ενώ προσδιορίζει με ακρίβεια
το μέγεθος ενός προβλήματος όταν έχει συμφωνηθεί ο τρόπος παράστασης, αφήνει ανοικτό το
ποιός είναι αυτός ο τρόπος παράστασης. Ό πω ς φάνηκε στο παράδειγμα της παράστασης ενός
γραφήματος, περισσότεροι από ένας τρόποι είναι δυνατοί και συνεπώ ς το μέγεθος ενός στιγ-
μιοτύπου μπορεί να μεταβάλλεται ανάλογα με τον τρόπο που επιλέγουμε να το παραστήσουμε.
Η απάντηση σ ’ αυτό είναι ότι πράγματι έτσι συμβαίνει, εντούτοις κάθε τρόπος παράστασης
είναι αποδεκτός αρκεί να μην δίνει συμβολοσειρές πολύ μεγαλύτερες από τις ελάχιστες δυνα
τές. Αυτή η τελευταία απαίτηση σημαίνει συμβολοσειρές μήκους £(Ι), όπου / το στιγμιότυπο,
π ολυ ω ν υ μ ικ ά σχετιζόμενες με τις ελάχιστες δυνατές £ m (I ). Δηλαδή θα πρέπει να υπάρχει
m-
κάποιο σταθερό πολυώνυμο ρ( η) , έτσι ώστε £(Ι) < p(£z nin(-O) Ύια κάθε στιγμιότυπο / του
προβλήματος. Αυτή η προτίμηση σε πολυωνυμικά σχετιζόμενες συναρτήσεις είναι διάχυτη σε
όλη την Θεωρία Π ολυπλοκότητας. Θεωρούμε ότι τέτοιες συναρτήσεις είναι «κοντά» μεταξύ
τους (ως προς τον ρυθμό αύξησης που παρουσιάζουν) και άρα μήκη παράστασης πολυωνυμικά
σχετιζόμενα με τα ελάχιστα είναι αποδεκτά. Στην πράξη η απαίτηση αυτή εξασφαλίζεται πολύ
εύκολα από κάθε «λογικό» τρόπο παράστασης τω ν στιγμιοτύπων. Το μόνο που απαιτείται είναι
η παράσταση τω ν αριθμών όπως συνήθως σε δεκαδική (ή δυαδική) μορφή. Ε ναλλακτικός τρό
πος θα ήταν το μοναδιαίο σύστημα όπου για παράδειγμα ο αριθμός 5 παριστάνεται σαν 11111.
Σε αυτή την περίπτωση όμως, το μήκος της παράστασης είναι εκθετικά μεγαλύτερο από το
ελάχιστο δυνατό και άρα δεν είναι αποδεκτό. Π άντως λογαριθμικός αριθμός ψηφίων είναι
α π α ρ α ίτ η τ ο ς για την παράσταση αριθμών και συνεπώ ς αν δεχθούμε ότι οι αριθμοί μας μπορεί
να γίνο υν αυθαίρετα μεγάλοι τότε αυτά τα ψηφία πρέπει να λαμβάνονται υπόψη στην εκτίμηση
του μεγέθους τω ν αριθμητικών προβλημάτων. Αντίθετα, αν λόγω της φύσης του προβλήματος
(ή έστω σιωπηρά) δεχθούμε ότι οι αριθμοί μας έχουν κάποιο σταθερό μέγεθος (π.χ. μπορούν
να χωρέσουν σε μία λέξη του υπολογιστή μας) τότε μπορούμε να τους χειριστούμε σαν μια
μονάδα. Έ τσ ι, στην Ε ισαγωγή εξετάσαμε το πρόβλημα της ταξινόμησης και δεχθήκαμε σαν
μέγεθος το πλήθος η τω ν αριθμών που ταξινομούμε και όχι το άθροισμα τω ν ψηφίων τους.
Αυτό έγινε γιατί δεχθήκαμε ότι κάθε αριθμός ήταν αρκετά μικρός ώστε να χωράει σε μία λέξη
του υπολογιστή. Σε περίπτωση που οι αριθμοί ήταν πολύ μεγάλοι (π.χ. με μέγεθος που είναι
συνάρτηση του η ) τότε το μέγεθος θα έπρεπε να είναι ο αριθμός τω ν ψηφίων τους.
2.3 Παραλλαγές της Μηχανής Turing
Η προσπάθεια για την εύρεση του «απόλυτου» υπολογιστικού μοντέλου οδήγησε τους ερευνητές
σε διάφορες επεκτάσεις της μηχανής Turing. Ό λες όμως αυτές οι προσπάθειες αποδεικνύο