SlideShare a Scribd company logo
Πανεπιστήμιο Πατρών - Σχολή θετικών Επιστημών
                Τμήμα Μαθηματικών




                   Σ ημειώσεις στο μάθημα




      Υ π ο λ ο γ ισ τ ικ ή Π ο λ υ π λ ο κ ο τ η τ α




                  Δημήτριος I. Καββαδίας
                   Επίκουρος Καθηγητής




                Πάτρα, Οκτώβριος 1999
Πρόλογος

Οι σημειώσεις αυτές περιλαμβάνουν το μεγαλύτερο μέρος της ύλης του προπτυχιακού μαθήμα­
τος «Υπολογιστική Πολυπλοκότητα» που διδάσκεται στο 4ο έτος του Τμήματος Μ αθηματικών
του Πανεπιστημίου Πατρών. Η διάρθρωση τους είναι η ακόλουθη:
    Στο πρώτο κεφάλαιο δίδεται μία εισαγω γή στις έννοιες της πολυπλοκότητας αλγορίθμων
και προβλημάτων για διάφορα μέτρα πολυπλοκότητας. Το κεφάλαιο 2 περιγράφει σε βάθος
το βασικό υπολογιστικό μοντέλο που χρησιμοποιείται, τη μηχανή Turing, και τις διάφορες
παραλλαγές του. Δ ίδονται ορισμοί της πολυπλοκότητας χρόνου και χώρου αλγορίθμων και
προβλημάτων. Το επόμενο κεφάλαιο είναι αφιερωμένο στις γενικ ές σχέσεις μεταξύ κλάσεων
πολυπλοκότητας. Σε αυτό περιλαμβάνονται όλες οι γνω σ τές σχέσεις όταν δεν υπάρχουν περιο­
ρισμοί στην συνάρτηση πολυπλοκότητας. Το κεφάλαιο 4 αναφέρει τις πολύ κρίσιμες έννοιες
της αναγω γής και της πληρότητας παρουσιάζοντας πλήρη προβλήματα για τις κλάσεις NL, Ρ
και ΝΡ. Τέλος το κεφάλαιο 5 είναι αφιερωμένο στην ΝΡ-πληρότητα. Παρουσιάζεται πληθώρα
προβλημάτων και αποδεικνύεται η πληρότητα τους για την κλάση ΝΡ.
    Είμαι ευγνώ μ ω ν στον μεταπτυχιακό φοιτητή του Τμήματος Μ ηχανικών Η λεκτρονικών
Υ πολογιστώ ν & Πληροφορικής του Πανεπιστημίου Πατρών, κ. Ηλία Κ. Σταυρόπουλο για την
ουσιαστική του βοήθεια. Σε αυτόν οφείλεται το μεγαλύτερο μέρος του κεφαλαίου 5 και η
επιμέλεια όλων τω ν σχημάτων και της παρουσίασης.

                                                                    Δημήτρης Καββαδίας
                                                                  Πάτρα, Οκτώβριος 1999




                                            ι
σ τ ο ν Γ ια ν ν ά κ η
Περιεχόμενα

Πρόλογος                                                                                                                                                          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

                                                                                  ν
4   Π ληρότητα                                                                                                                                                   53
    4.1 Α ν α γ ω γ έ ς .....................................................................................................................................    53
    4.2 Π λη ρότη τα.....................................................................................................................................        55
    4.3 Μερικά πλήρη π ρ ο β λ ή μ α τ α ....................................................................................................                    57

5   Ν Ρ—πλήρη προβλήμ ατα                                                                                                                                        65
    5.1 Παραλλαγές του SAT ...............................................................................................................                       65
    5.2 Προβλήματα από Θεωρία Γ ρ α φ η μ ά τω ν.............................................................................                                    71
    5.3 Ά λλα πρ οβλήμ ατα......................................................................................................................                 79
    5.4 Ασθενής ΝΡ-πληρότητα και ψευδοπολυωνυμικοί αλγόριθμοι .................................                                                                  82
    5.5 Α ποδεικνύοντας Ν Ρ-πληρότητα............................................................................................                                86
    5.6 Α σ κ ή σ εις.........................................................................................................................................   87

Βιβλιογραφία                                                                                                                                                     91
Κεφάλαιο 1
Εισαγωγή

Αντικείμενο της Υ πολογιστικής Π ολυπλοκότητας είναι τα υ π ο λ ο γ ι σ τ ι κ ά προ βλήμ ατ α καθώς
και οι ενδογενείς ιδιότητες τους που τα κάνουν να επιλύονται ή να μην επιλύονται αποτελε­
σματικά. Σκοπός αυτού του κεφαλαίου είναι να εξηγήσει το αντικείμενο της Υπολογιστικής
Π ολυπλοκότητας δίνοντας έμφαση στην διάκριση μεταξύ Θεωρίας Π ολυπλοκότητας και Θεω­
ρίας Αλγορίθμων.
      Έ να υπολογιστικό πρόβλημα είναι μια ερώτηση η οποία περιγράφεται από ένα σύνολο
παραμέτρων ή αλλιώς ελεύθερων μ ετ α β λ η τώ ν καθώς και από την σ χ έ σ η που πρέπει να έχει η
λ ύ σ η του με τις μεταβλητές εισόδου. Είναι σημαντική η διάκριση μεταξύ του π ρο β λήματ ος
και ενός σ τ ι γ μ ι ο τ ύ π ο υ του: Το στιγμιότυπο προκύπτει από μια απόδοση συγκεκριμένω ν τιμών
στις παραμέτρους του προβλήματος.
      Σαν παράδειγμα ας θεωρήσουμε το πολύ χρήσιμο στην Πληροφορική και εξαιρετικά μελε­
τημένο πρόβλημα της Ταξινόμησης (sorting). Παράμετρος αυτού του προβλήματος είναι ένα
διάνυσμα η πραγματικών αριθμών / = (α ι, α2, . . . , α η ). Λύση στο πρόβλημα της Ταξινόμησης
είναι το «ταξινομημένο» διάνυσμα I' = (α'ΐ5 α'2, . . . , α'η ) με συντεταγμένες τους ίδιους αριθμούς
αλλά σε αύξουσα σειρά: α < α,·+1, ΐ = 1, · · · , n — 1.
      Έ να στιγμιότυπο του προβλήματος της Ταξινόμησης είναι π.χ. για η = 4 το διάνυσμα
/ = (7, 3,12, — Σε αυτή την περίπτωση η λύση είναι το διάνυσμα V = ( — 3, 7,12).
                     2).                                                           2,
      Η επίλυση ενός υπολογιστικού προβλήματος απαιτεί την σχεδίαση ενός α λ γ ο ρ ίθ μ ο υ ή αλ­
λιώ ς μιας σαφούς βήμα προς βήμα διαδικασίας που να οδηγεί στην λύση σε πεπερασμένο αριθμό
βημάτων.
      Παρόλο που η ανάπτυξη τεχνικώ ν σχεδιασμού και μελέτη τω ν αλγορίθμων δεν είναι κύριο
αντικείμενο του βιβλίου αυτού, οι αλγόριθμοι είναι η άλλη πλευρά (θετική;) της μελέτης των
υπολογιστικώ ν προβλημάτων και πολλές φορές θα χρειαστεί να περιγράφουμε αλγορίθμους για
κάποιο πρόβλημα. Για λόγους σαφήνειας και απλότητας θα απαιτούμε οι αλγόριθμοι μας να
συντάσσονται από επιμέρους βήματα που είναι συνήθη σε απλά προγράμματα υπολογιστών.
Ό που η απαίτηση συντομίας το επιβάλλει, θα ομαδοποιούμε επίσης συνθετότερες διεργασίες.
Σε μια τέτοια περίπτωση όμως θα είναι κατανοητό ότι η ανάλυση σε πραγματικά «προγραμμα-
τιστικά» βήματα μπορεί να γίνει χωρίς πρόβλημα.
      Για την περιγραφή τω ν αλγορίθμων μας θα χρησιμοποιήσουμε μια ψευδογλώσσα προγραμ­
ματισμού με βασική δομή δανεισμένη από την Pascal ώστε να συνδυάζουμε την σαφήνεια και

                                                 1
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 και όχι
ακόμη του π ρο β λή μ α τ ος τΐ)ς Ταξινόμησης.
    Κάπως γενικά μιλώντας, αυτό σημαίνει την αξιολόγηση του συγκεκριμένου αλγορίθμου,
δηλαδή την εύρεση ιδιοτήτων του που να μας επιτρέψουν να τον χαρακτηρίσουμε σαν καλό
ή κακό. Καλό ή κακό όμως με βάση ποιό μέτρο; Και ακόμη γενικότερα, ποιές είναι τελικά
οι ιδιότητες πως μας ενδιαφέρουν σε ένα αλγόριθμο; Σ ’ αυτή την ερώτηση ο συνηθισμένος
χρήστης προγραμμάτων Η/Υ (άρα και αλγορίθμων) απαντά: Η ταχύτητα. Πραγματικά η
1.1. ΑΛΓΟΡΙΘΜΟΙ Κ Α Ι ΠΟΛ ΥΠΛΟΚΟΤΗΤΑ                                                                       3

ταχύτητα σε ένα αλγόριθμο είναι από τα πλέον επιθυμητά χαρακτηριστικά. Ακόμη και στην
εποχή μας όπου η εξέλιξη τω ν υπολογιστών έχει καταφέρει να κατασκευάσει μηχανές με
εξαιρετικές ταχύτητες, τα καινούργια προβλήματα που καλούνται να λύσουν οι υπολογιστές
κάνει την ταχύτητα της χρησιμοποιούμενης μεθόδου, ίσως το πιο σημαντικό χαρακτηριστικό
της. Σε καμμία όμως περίπτωση δεν είναι και το μοναδικό: Η μνήμη είναι μία άλλη παράμετρος
που ενδιαφέρει σε ένα υπολογισμό. Ό πω ς και ο χρόνος, έτσι και ο χώρος (η μνήμη) αποτελεί
υπολογιστικό πόρο σε ανεπάρκεια και κατά συνέπεια ενδιαφέρουν οι επιδόσεις του αλγορίθμου
μας ως προς αυτόν.
     Γενικά πάντως το μέτρο της πολυπλοκότητας που μας ενδιαφέρει μπορεί να είναι αρκετά
γενικό ή αρκετά ειδικό ανάλογα με τις ιδιαιτερότητες του προβλήματος και/ή της μηχανής που
χρησιμοποιούμε. Για παράδειγμα σε ένα παράλληλο υπολογιστή (ένα υπολογιστή όπου πολλές
μονάδες επεξεργασίας συνεργάζονται για την επίλυση του ίδιου προβλήματος) ένα στοιχείο που
ενδιαφέρει είναι ο αριθμός τω ν μηνυμάτων που ανταλλάσσονται μεταξύ τω ν επεξεργαστών. Η
πρακτική αιτία για ένα τέτοιο μέτρο πολυπλοκότητας είναι βασικά τεχνολογική: η επικοινωνία
μεταξύ τω ν επεξεργαστών είναι πολύ πιο χρονοβόρα από την καθαυτό επεξεργασία σε ένα
υπολογιστή. Συνεπώς ο αριθμός τω ν ανταλλασσομένων μηνυμάτων κατά την εκτέλεση ενός
αλγορίθμου αποτελεί καλή ένδειξη της ταχύτητας που θα πετύχει.
     Ας προσπαθήσουμε τώρα να εκτιμήσουμε τις επιδόσεις, ως προς τον χρόνο, του αλγόριθμου
της φυσαλλίδας που περιγράψαμε στο Παράδειγμα 1.1. Πιο συγκεκριμένα ας προσπαθήσουμε
να εκτιμήσουμε τον αριθμό τω ν συγκρίσεω ν που κάνει όταν ταξινομεί η αριθμούς. Ό πω ς
εξηγήσαμε παραπάνω, κατά την εκτέλεση του εξωτερικού loop για πρώτη φορά θα γίνουν
η —1 συγκρίσεις, κατά την δεύτερη εκτέλεση η —2, την τρίτη η —3 κλπ, ενώ την τελευταία μία
σύγκριση. Σ υνεπώς ο συνολικός αριθμός συγκρίσεω ν είναι η ( η — 1)/2. Εδώ μπορεί κάποιος
να αναρωτηθεί κατά πόσο ο αριθμός τω ν συγκρίσεω ν είναι πραγματική ένδειξη για τον χρόνο
που θα χρειαστεί ο αλγόριθμος μας να ταξινομήσει η αριθμούς. Πραγματικά, όπως μπορεί
να παρατηρήσει ο αναγνώ στης, τα συνολικά βήματα του αλγορίθμου εξαρτώνται και από το
α π ο τ έ λ ε σ μ α τω ν συγκρίσεω ν: στο τελευταίο βήμα η αντιμετάθεση τω ν I ( j + 1) και I ( j ) θα γίνει
μόνο όταν το πρώτο είναι μικρότερο του δεύτερου και συνεπώ ς στην περίπτωση αυτή επιπλέον
χρόνος θα απαιτηθεί για να γίνει η επιπλέον λειτουργία. Μ άλιστα ο χρόνος αυτός μπορεί να
είναι σημαντικός αν για παράδειγμα υποθέσουμε ότι ο αλγόριθμος ταξινομεί εγγραφές στην
δευτερεύουσα μνήμη του υπολογιστή (δίσκο) δηλαδή μία λειτουργία κατά τεκμήριο αργή.
     Υπάρχουν εντούτοις ισχυρά επιχειρήματα υπέρ της επιλογής τω ν συγκρίσεω ν σαν μέτρου
πολυπλοκότητας. Κατά πρώτον οι συγκρίσεις αποτελούν άνω φράγμα του αριθμού τω ν αντι­
μεταθέσεων. Πράγματι, οι αντιμεταθέσεις μπορεί να είναι το πολύ όσες και οι συγκρίσεις
δηλ. το πολύ η ( η — 1)/2. (Παρεμπιπτόντως, αυτό μπορεί να συμβεί και μάλιστα στην πε­
ρίπτωση που το διάνυσμα που δίδεται για ταξινόμηση έχει την αντίστροφη διάταξη, δηλαδή
είναι ταξινομημένο σε φθίνουσα σειρά.) Συνεπώς ο αριθμός τω ν συγκρίσεω ν χαρακτηρίζει την
π ολυ πλο κό τητ α χ ε ι ρ ό τ ε ρ η ς π ε ρ ίπ τ ω σ η ς (worst case com plexity) του αλγορίθμου bubblesort.
Ακόμη όμως και στο τυχαίο τρέξιμο του αλγορίθμου (όπου γενικά περιμένουμε οι συγκρίσεις
να είναι λιγότερες από τις αντιμεταθέσεις), ο αριθμός τω ν συγκρίσεω ν αποτελεί καλή ένδειξη
της συνολικής δουλειάς που κάνει ο αλγόριθμος μας.
     0 τρόπος αυτός εκτίμησης της πολυπλοκότητας ενός αλγορίθμου είναι γενικότερος. Τις
περισσότερες φορές η ακριβής εκτίμηση του αριθμού τω ν βημάτων μπορεί να είναι πολύ δύ-
4                                                                    ΚΕΦΑΛΑΙΟ 1. ΕΙΣΑΓΩΓΗ

σ χ ο λ ή ή/και να εξαρτάται από την συγκεκριμένη είσοδο του προβλήματος. Επίσης μπορεί
και πάλι να μην αντανακλά απολύτως στο χρόνο που θα κάνει ένας υπολογιστής για να τρέ-
ξει, μια και οι πράξεις σε μια πραγματική μηχανή δεν διαρκούν όλες τον ίδιο χρόνο. Έ τσι
στον αλγόριθμο bubblesort, μια σχολαστική απάντηση θα έπρεπε να είναι της μορφής f ( n )
συγκρίσεις και g i n ) αντιμεταθέσεις μιας και είναι λογικό να υποθέσει κανείς ότι οι συγκρίσεις
και οι αντιμεταθέσεις δεν διαρκούν τον ίδιο χρόνο στον υπολογιστή. Και πάλι όμως δεν θα
είμασταν εντελώ ς ακριβείς: Θα έπρεπε να ληφθούν υπόψη τα βήματα που απαιτούνται για την
εκτέλεση τω ν δύο loops κλπ. Είναι όμως προφανές ότι με τον τρόπο αυτό η απάντηση μας για
το ποιά είναι η πολυπλοκότητα του αλγορίθμου μας αρχίζει να εκφεύγει από τον αλγόριθμο
μας αυτό καθαυτό και μπαίνει σε λεπτομέρειες είτε προγραμματιστικές είτε κατασκευαστικές
του υπολογιστή μας. Για όλους αυτούς τους λόγους συνήθως επιλέγουμε κάποιο βήμα του
αλγορίθμου (που πολλές φορές μπορεί να είναι και συνθετότερη λειτουργία) το οποίο κ υ ρ ι α ρ ­
χ ε ί στο σύνολο τω ν βημάτων και συνεπώ ς αποτελεί καλή ένδειξη της συνολικής δουλειάς του
αλγορίθμου. Τα υπόλοιπα βήματα που ενδεχομένως να κάνει ο αλγόριθμος μας συνδέονται
συνήθως γραμμικά (είναι δηλαδή ανάλογα) με αυτό το κυρίαρχο βήμα.
    Η εξάρτηση του χρόνου που κάνει ένας αλγόριθμος για να απαντήσει από την συγκεκριμένη
είσοδο, όπως επισημάνθηκε παραπάνω, μπορεί να είναι ιδιαίτερα έντονη σε σημείο που να
εγείρει κριτική για την επιλογή μας να αναφέρουμε σαν πολυπλοκότητα ενός αλγορίθμου την
πολυπλοκότητα χειρότερης περίπτωσης. Πράγματι θα ήταν δυνατό η κακή συμπεριφορά ενός
αλγορίθμου να παρουσιάζεται μόνο σε ένα μικρό ποσοστό τω ν στιγμιοτύπων του προβλήματος,
έτσι ώστε ο αλγόριθμος να συμπεριφέρεται ικανοποιητικά στην μ έ σ η ή α ν α μ ε ν ό μ ε ν η περίπτωση.
Για ένα τέτοιο πρόβλημα και αλγόριθμο η α ν α μ ε ν ό μ ε ν η π ολυ πλο κό τητ α του θα ήταν ιδιαίτερα
χρήσιμη. Παρόλο που τέτοιοι συνδυασμοί προβλημάτων, αλγορίθμων και πεδίων εφαρμογών
πραγματικά υπάρχουν, η μαθηματική μελέτη της αναμενόμενης πολυπλοκότητας απαιτεί την
γνώ ση της κατανομής πιθανότητας στις εισόδους (στα στιγμιότυπα), μια πληροφορία που
σπανίως είναι διαθέσιμη. Εξάλλου η πολυπλοκότητα χειρότερης περίπτωσης έχει μέσα της
και ένα στοιχείο ασφάλειας: το χειρότερο που μπορεί να συμβεί είναι αυτό. Αντίθετα η
αναμενόμενη πολυπλοκότητα είναι χρήσιμη (όταν μπορεί να υπολογιστεί) όταν ο αλγόριθμος
χρησιμοποιείται επανειλημένα στο ίδιο σύνολο στιγμιοτύπων. Στην πλειοψηφία λοιπόν των
περιπτώσεων θα ασχοληθούμε με πολυπλοκότητα χειρότερης περίπτωσης.
    Η συνάρτηση n ( n —1)/2 είναι η π ολυ πλο κό τητ α χ ρ ό ν ο υ (tim e com plexity) του αλγορίθμου
της φυσαλλίδας. Ό πω ς παρατηρεί ο αναγνώ στης, πρόκειται για μια συνάρτηση μιας ακεραίας
παραμέτρου (στο παράδειγμα μας του η δηλαδή της διάστασης του διανύσματος που θέλουμε
να ταξινομήσουμε). Η παράμετρος αυτή ονομάζεται μ έ γ ε θ ο ς του π ρ ο β λή μ α τ ος και αποτελεί
μέτρο του μεγέθους τω ν δεδομένων εισόδου. Πραγματικά, ανεξάρτητα από την φύση του προ­
βλήματος που εξετάζουμε και του αλγορίθμου που επιλέξαμε για την επίλυση του, περιμένουμε
περισσότερος χρόνος να απαιτηθεί για μεγάλα στιγμιότυπα από ότι για μικρότερα και συνεπώς
η πολυπλοκότητα χρόνου πρέπει κ α τ’ ανάγκη να είναι μια συνάρτηση του μεγέθους του προ­
βλήματος. Α ντίστοιχες συναρτήσεις ζητούνται για οποιοδήποτε μέτρο πολυπλοκότητας μας
ενδιαφέρει. Η παράμετρος που προσδιορίζει το μέγεθος του προβλήματος εξαρτάται από την
φύση του προβλήματος που εξετάζουμε. Στο πρόβλημα της ταξινόμησης επιλέξαμε το πλήθος
τω ν αριθμών σαν μέγεθος του προβλήματος. Η επιλογή αυτή είναι μάλλον δικαιολογημένη
αν σκεφτεί κανείς ότι κάθε «λογική» αλγοριθμική διαδικασία ταξινόμησης (και για «λογικού»
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 είναι τετραγωνικός. Πάντως
πρέπει να αναφερθεί ότι ενώ η πρακτική αυτή είναι ο κανόνας, δεν λείπουν και οι εξαιρέσεις
κυρίως σε πρακτικά προβλήματα και αλγορίθμους με «μικρές» συναρτήσεις πολυπλοκότητας.
Η ταξινόμηση είναι ένα τέτοιο πρόβλημα και ο αναγνώ στης μπορεί να βρεί ιδιαίτερα προσε­
κτικές αναλύσεις πολλών διαφορετικών αλγορίθμων για το πρόβλημα της ταξινόμησης στο
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).
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 περιγράφει την πολυπλοκότητα κάποιου προβλήματος. Πρόκειται για ένα
ιδιαίτερα ακριβές αποτέλεσμα, το οποίο εξήχθη με μεθόδους απόλυτα προσαρμοσμένες στο
συγκεκριμένο πρόβλημα. Δ υσ τυχ ώ ς τέτοιου είδους ακριβή αποτελέσματα είναι πολύ δύσκολο
να εξαχθούν και κατά συνέπεια είναι πολύ λίγα στην Θεωρία Π ολυπλοκότητας. Αναγκαζόμα­
στε λοιπόν να χρησιμοποιήσουμε άλλες μεθόδους, περισσότερο γενικ ές, που δίνουν κατά βάση
ένα χαρακτηρισμό του προβλήματος παρά ένα ακριβές κάτω φράγμα. Αυτές οι μέθοδοι είναι
το αντικείμενο τω ν επομένων κεφαλαίων.
ΚΕΦΑΛΑΙΟ 1. ΕΙΣΑΓΩΓΗ
Κεφάλαιο 2
Η Μηχανή Turing

Στο προηγούμενο κεφάλαιο περιγράψαμε με την βοήθεια μιας ψευδογλώσσας έναν αλγόριθμο
για το πρόβλημα της ταξινόμησης. Το «τρέξιμο» αυτού του αλγορίθμου, αφέθηκε να εννοηθεί
ότι θα γίνει σε ένα υπολογιστή ο οποίος είναι σε θέση να εκτελέσει προγράμματα μιας γλώ σσας
που ομοιάζει με την Pascal. Είναι γνω στό ότι όλοι οι υπολογιστές μπορούν να εκτελέσουν
παρόμοιες εντολές. Ιδού όμως μια ενδιαφέρουσα προοπτική. Θα ήταν άραγε δυνατό να υπάρχει
κάποια υπολογιστική μηχανή με εξαιρετικές ιδιότητες για την οποία θα μπορούσε να γραφεί
ένας αλγόριθμος με πολύ καλύτερες επιδόσεις από τους γνω σ τούς; Με άλλα λόγια, ποιά είναι τα
όρια που μπορεί να φτάσει ο (μηχανιστικός) υπολογισμός; Πέρα όμως από αυτό, είναι ανάγκη
εφόσον στόχος μας είναι η αυστηρά μαθηματική μελέτη τω ν υπολογιστικώ ν προβλημάτων και
τω ν αλγορίθμων να καταλήξουμε σε κάποιο αυστηρό μοντέλο υπολογιστικής μηχανής στο
οποίο θα γίνονται οι μετρήσεις τω ν αναγκαίω ν υπολογιστικώ ν πόρων με εννιαίο τρόπο. Το
μοντέλο αυτό θα πρέπει να συνδυάζει τα παρακάτω χαρακτηριστικά: Πρώτον, θα πρέπει να
είναι αρκετά κοντά στους πραγματικούς (ρεαλιστικούς) υπολογιστές ώστε τα αποτελέσματα
που θα παίρνουμε από την μαθηματική ανάλυση στο μοντέλο μας να είναι μεταφέρσιμα στις
πραγματικές μηχανές. Και δεύτερον, θα πρέπει να είναι ιδιαίτερα απλό ώστε η ανάπτυξη
της θεωρίας μας να είναι απλή. Κατά παράδοξο τρόπο η απάντηση και στα δύο ερωτήματα
που τέθηκαν, είναι κοινή. Το μαθηματικό μοντέλο το οποίο έχει υιοθετηθεί στην Θεωρία
Π ολυπλοκότητας είναι η μ η χ α ν ή Turing η οποία είναι ένα εντυπωσιακά απλό μοντέλο, ιδιαίτερα
κατάλληλο για την ανάπτυξη της θεωρίας μας που αποδεικνύεται όμως ότι παρέχει όλη την
δυνατή υπολογιστική ισχή που μπορεί να έχει ο μηχανιστικός υπολογισμός και μάλιστα με
επιδόσεις αρκετά κοντά σε αυτές τω ν ρεαλιστικών υπολογιστών.


2.1     Περιγραφή - Ορισμός
Η μηχανή Turing προτάθηκε από τον Alan Turing [30] σαν ένα μοντέλο υπολογισμού και είναι
μια μηχανή που επιδρά σε σύ μβ ολ α. Τα σύμβολα που μπορεί να διαχειριστεί μία μηχανή Turing
είναι στοιχεία ενός πεπερασμένου συνόλου συμβόλων που ονομάζεται αλφάβητο. Μία ακολου­
θία από σύμβολα του αλφαβήτου μας αποτελεί μια λ έ ζ η ή σ υ μ β ο λ ο σ ε ιρ ά . Τέλος, ένα σύνολο
συμβολοσειρών αποτελεί μια γ λώ σσ α. Τα σύμβολα της μηχανής μπορούμε να θεωρήσουμε ότι
είναι γραμμένα σε μια «ταινία» που έχει άπειρο μήκος και προς τις δύο κατευθύνσεις (μοιάζει

                                                9
10                                                      ΚΕΦΑΛΑΙΟ 2. Η ΜΗΧΑΝΗ TURING




                  Σχήμα 2.1: Σχηματική αναπαράσταση της μηχανής Turing


δηλαδή με την γεωμετρική ευθεία). Η ταινία χωρίζεται σε «κύτταρα», σε κάθε ένα από τα οποία
μπορεί να εγγράφει ένα σύμβολο. Η μηχανή μπορεί να διαβάζει ή να γράφει ένα σύμβολο σε
κάθε κίνηση της μέσω μιας κ ε φ α λ ή ς ανάγνωσης/εγγραφής. Μια κίνηση της μηχανής Turing
είναι συνδυασμός δύο πραγμάτων: του συμβόλου που βρίσκεται την χρονική στιγμή πριν από
την κίνηση στο κύτταρο κάτω από την κεφαλή και της τρέχουσας κ α τ ά σ τ α σ η ς στην οποία
βρίσκεται η μηχανή μας. Μια κατάσταση μπορεί να ειδωθεί σαν ένα σ τ ο ι χ ε ί ο μ ν ή μ η ς χαι κάθε
μηχανή Turing έχει ένα πεπερασμένο σύνολο από καταστάσεις. Μια σχηματική παράσταση
της μηχανής Turing φαίνεται στο Σχήμα 2.1. Παρατηρούμε την ταινία της μηχανής καθώς
και την κεφαλή εγγραφής/ανάγνωσης. Στο τετράγωνο πλαίσιο θεωρούμε ότι βρίσκονται οι
καταστάσεις καθώς και ο μηχανισμός που αποφασίζει τις κινήσεις της μηχανής μας, όπως
λέχθηκε σαν συνδυασμός της τρέχουσας κατάστασης και του συμβόλου που βρίσκεται κάτω
από την κεφαλή. Αυτός όλος ο μηχανισμός συνιστά τον π ε π ε ρ α σ μ έ ν ο έλ εγχ ο της μηχανής.
Τι είναι όμως μια κίνηση της μηχανής Turing; Πολύ απλά μια κίνηση της μηχανής Turing
συνίσταται στην αλλαγή του συμβόλου που βρίσκεται κάτω από την κεφαλή με κάποιο άλλο,
στην εν συνεχεία κίνηση της μία θέση αριστερά ή δεξιά και στην αλλαγή της κατάστασης της.
    Τα παραπάνω πρέπει φυσικά να ειδωθούν σαν μια «μηχανοποιημένη» περιγραφή της μηχανής
Turing η οποία είναι ένα μαθηματικό αντικείμενο, χωρίς ταινίες, κεφαλές κλπ., βοηθούν όμως
στην κατανόηση του μοντέλου μας. Στην συνέχεια δίνεται ο μαθηματικός ορισμός της μηχανής
Turing. Πριν όμως από αυτό χρήσιμο είναι να συμπληρώσουμε την περιγραφή με ορισμένες
ακόμη λεπτομέρειες. Πρέπει να λεχθεί ότι σε αυτές τις λεπτομέρειες υπάρχουν διαφορές στην
βιβλιογραφία στον τρόπο που ορίζονται. Οι διαφορές αυτές είναι επουσιώδεις και με κανένα
τρόπο δεν επηρεάζουν την συμπεριφορά του μοντέλου μας για τον σκοπό που το ορίσαμε. Έ τσι
πρέπει να κάνουμε μια σύμβαση για το πως δίνουμε την είσοδο στην μηχανή και πως αρχίζει
ο υπολογισμός, θεω ρούμε λοιπόν ότι υπάρχει ένα ειδικό σύμβολο το  το οποίο υπάρχει σε
                                                                         >
κάποιο κύτταρο και αμέσως δεξιά από αυτό τοποθετείται η συμβολοσειρά εισόδου (η είσοδος
στην μηχανή μας). Ό λα τα κύτταρα που δεν περιέχουν κάποιο άλλο σύμβολο, θεωρείται
ότι περιέχουν το κ ε ν ό } . Η κεφαλή της μηχανής πριν την αρχή του υπολογισμού θεωρείται
                           >
ότι βρίσκεται πάνω από το > Η μηχανή πριν από την αρχή του υπολογισμού βρίσκεται σε
                                 .
μια ειδική κατάσταση που την συμβολίζουμε με το s και ονομάζεται α ρ χ ι κ ή κ α τ ά σ τ α σ η . Η
μηχανή σταματά όταν βρεθεί σε μια από τις καταστάσεις h, ^ναι, <?οχι· Η πρώτη ονομάζεται
κατάσταση τερματισμού, ενώ οι άλλες δύο, πέρα από το τέρμα του υπολογισμού, σηματοδοτούν
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).
Δ ιαισθητικά η διαμόρφωση είναι το σύνολο τω ν πληροφοριών που μονοσήμαντα προσδιορίζουν
12                                                                 ΚΕΦΑΛΑΙΟ 2. Η ΜΗΧΑΝΗ TURING

την εξέλιξη του υπολογισμού μετά από κάποιο βήμα. Ισοδύναμα μπορούμε να δούμε την
διαμόρφωση σαν μία «φωτογραφία» της μηχανής μας μία χρονική στιγμή. Δ εν είναι δύσκολο
να αντιληφθούμε ότι οι παράμετροι που επηρεάζουν τον υπολογισμό είναι η κατάσταση, το
περιεχόμενο της ταινίας και η θέση της κεφαλής. Για ευκολία τις δύο τελευταίες πληροφορίες
τις περιγράφουμε με δύο συμβολοσειρές u και υ. Η u είναι η συμβολοσειρά από το σύμβολο
 t> μέχρι και το σύμβολο κάτω από την κεφαλή. Η ν αρχίζει από το σύμβολο δεξιά της
κεφαλής μέχρις εκεί που αρχίζει η άπειρη σειρά τω ν κενώ ν. Επομένως μια διαμόρφωση C
είναι ένα στοιχείο του Καρτεσιανού γινομένου Κ X (Σ        X (Σ  {!?})*. Στα παραδείγματα
που ακολουθούν περιγράφεται η εξέλιξη του υπολογισμού μιας μηχανής με παράθεση των
διαδοχικών διαμορφώσεων.
    Ας δώσουμε τώρα ένα παράδειγμα μιας μηχανής Turing που μετά από πεπερασμένο αριθμό
βημάτων τερματίζει στην κατάσταση ^ναι ή <Ζοχι·

Π α ρ ά δ ειγμ α 2.1 Έ σ τω η μηχανή Turing Μ = ( Κ , Σ , δ , β ) όπου Σ = { |> t>,α,δ}, Κ = {s},
                                                                               ,
και δ η συνάρτηση μετάβασης που ορίζεται σύμφωνα με τον παρακάτω πίνακα:

                                      q       σ               % ,σ )
                                      s       t>            (s,    t>, — y)
                                      s       a            (< n a i , a, —
                                                             Z              )
                                      s       b              (s, b, —   y)
                                                                         T
                                      s       
                                              >
                                                           ©
                                                           o
                                                           >
                                                           <
                                                            1




Ας δούμε τις μεταβάσεις της μηχανής Μ με είσοδο, για παράδειγμα την συμβολοσειρά bbaab,
καταγράφοντας τις διαδοχικές διαμορφώσεις της:


                             (s,   >} bbaab )     —
                                                   ι   y     (s,    t>b} baab)

                                                   —
                                                   i   y     (s,    t>bb} a a b )

                                                   —
                                                   ι   y     (s,    >bba} a b )

                                                   1
                                                   —   >     (<?nai, t>bba,ab)


Η μηχανή Μ λοιπόν, μετά από ένα αριθμό βημάτων, τερματίζει στην κατάσταση «ΝΑΙ». Ας
δούμε την λειτουργία της μηχανής για μια ακόμα είσοδο, π.χ. για την συμβολοσειρά bbb:


                               (s, t>, bbb)                 (s, t>b, bb)
                                                            (s, I
                                                                >bb, b)
                                                            (s, >bbb, t>)
                                                            (<?oxi, >bbb,>)

Με είσοδο την συμβολοσειρά bbb η μηχανή Μ τερματίζει στην κατάσταση «ΟΧΙ». Είναι
εύκολο να δει κανείς ότι η μηχανή Μ αποδέχεται όλες τις συμβολοσειρές που περιέχουν τον
χαρακτήρα α και απορρίπτει αυτές που περιέχουν μόνο b.
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, μπορούμε να κάνουμε
δύο αντίγραφα τω ν καταστάσεω ν με τις ίδιες μεταβάσεις, στο ένα από τα οποία η τιμή του
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, θεωρούμε ότι έχουμε μόνο στην πρώτη περίπτωση,
    *Σ την π ρ α γ μ α τ ικ ό τ η τ α μόνο π ο λ λ α π λ α σ ια σ τ ικ ή και όχι ε κ θ ετικ ή α ύξη σ η σ τ ο ν αριθμό τ ω ν κ α τ α σ τ ά σ ε ω ν
είναι απαραίτητη, όμως η σ χ εδ ία ση είναι πολύ δυσκ ο λό τερ η και η λ ε ιτ ο υ ρ γ ία της μηχανής πολύ λ ιγ ώ τ ε ρ ο
κα τα νο η τ ή . Οι τ ε χ ν ικ έ ς που χ ρ η σ ιμ οπ ο ιο ύνται α να π τ ύ χ θ η κ α ν σε ένα τ ε λ ε ίω ς διαφο ρ ετικό χώρο, α υ τό ν της
ψηφιακής σχεδίασης.
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  ,. . . , χ η ) : {Τ, Έ}η — >{Τ, Έ} σ ύ μ φ ω ν α μ ε τους προ φ αν είς
κανόνες , όπου δ η λ α δ ή το «ή» δύο λ ο γ ι κ ώ ν μετ α β λ η τώ ν είναι α λ η θ ές αν τουλάχιστον μία από
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 η όχι. Αυτό το είναι το πρόβλημα
2.3. ΠΑΡΑΛΛΑΓΕΣ ΤΗΣ ΜΗΧΑΝΗΣ TURING                                                                                              17

α π ό φ α σ η ς το σ χ ε τ ι ζ ό μ ε ν ο μ ε τη ν L. Εξαιτίας αυτής της άμεσης σχέσης προβλημάτων απόφα­
σης και γλω σ σ ώ ν πολλές φορές θα μιλάμε για την γ λ ώ σ σ α του π ρο β λή μ α τ ος π.χ. την γλώ σσα
του SAT.
     Η παράσταση τω ν στιγμιοτύπων ενός προβλήματος μέσω συμβολοσειρών, λύνει και το
πρόβλημα του αυστηρού ορισμού του μ ε γ έ θ ο υ ς του στιγμιοτύπου. Έ τσ ι έχουμε:
Ο ρισμ ός 2 .7 Ο ρ ίζ ο υμ ε ως μ έ γ ε θ ο ς εν ό ς σ τ ι γ μ ι ο τ ύ π ο υ εν ό ς υ π ο λ ο γ ι σ τ ι κ ο ύ π ρο β λή μ α τ ος το
μ ή κ ο ς τη ς σ υ μ β ο λ ο σ ε ι ρ ά ς (δ η λα δ ή το ν α ρ ιθ μ ό των χ α ρ α κ τ ή ρ ω ν της) η ο π ο ία το π α ρ ισ τ ά ν ει
σ ε κ ά π ο ι α σ ύ μ β α σ η π α ρά στασης .
0 αναγνώ στης μπορεί να παρατηρήσει ότι ο παραπάνω ορισμός ενώ προσδιορίζει με ακρίβεια
το μέγεθος ενός προβλήματος όταν έχει συμφωνηθεί ο τρόπος παράστασης, αφήνει ανοικτό το
ποιός είναι αυτός ο τρόπος παράστασης. Ό πω ς φάνηκε στο παράδειγμα της παράστασης ενός
γραφήματος, περισσότεροι από ένας τρόποι είναι δυνατοί και συνεπώ ς το μέγεθος ενός στιγ-
μιοτύπου μπορεί να μεταβάλλεται ανάλογα με τον τρόπο που επιλέγουμε να το παραστήσουμε.
Η απάντηση σ ’ αυτό είναι ότι πράγματι έτσι συμβαίνει, εντούτοις κάθε τρόπος παράστασης
είναι αποδεκτός αρκεί να μην δίνει συμβολοσειρές πολύ μεγαλύτερες από τις ελάχιστες δυνα­
τές. Αυτή η τελευταία απαίτηση σημαίνει συμβολοσειρές μήκους £(Ι), όπου / το στιγμιότυπο,
π ολυ ω ν υ μ ικ ά σχετιζόμενες με τις ελάχιστες δυνατές £ m (I ). Δηλαδή θα πρέπει να υπάρχει
                                                            m-
κάποιο σταθερό πολυώνυμο ρ( η) , έτσι ώστε £(Ι) < p(£z         nin(-O) Ύια κάθε στιγμιότυπο / του
προβλήματος. Αυτή η προτίμηση σε πολυωνυμικά σχετιζόμενες συναρτήσεις είναι διάχυτη σε
όλη την Θεωρία Π ολυπλοκότητας. Θεωρούμε ότι τέτοιες συναρτήσεις είναι «κοντά» μεταξύ
τους (ως προς τον ρυθμό αύξησης που παρουσιάζουν) και άρα μήκη παράστασης πολυωνυμικά
σχετιζόμενα με τα ελάχιστα είναι αποδεκτά. Στην πράξη η απαίτηση αυτή εξασφαλίζεται πολύ
εύκολα από κάθε «λογικό» τρόπο παράστασης τω ν στιγμιοτύπων. Το μόνο που απαιτείται είναι
η παράσταση τω ν αριθμών όπως συνήθως σε δεκαδική (ή δυαδική) μορφή. Ε ναλλακτικός τρό­
πος θα ήταν το μοναδιαίο σύστημα όπου για παράδειγμα ο αριθμός 5 παριστάνεται σαν 11111.
Σε αυτή την περίπτωση όμως, το μήκος της παράστασης είναι εκθετικά μεγαλύτερο από το
ελάχιστο δυνατό και άρα δεν είναι αποδεκτό. Π άντως λογαριθμικός αριθμός ψηφίων είναι
α π α ρ α ίτ η τ ο ς για την παράσταση αριθμών και συνεπώ ς αν δεχθούμε ότι οι αριθμοί μας μπορεί
να γίνο υν αυθαίρετα μεγάλοι τότε αυτά τα ψηφία πρέπει να λαμβάνονται υπόψη στην εκτίμηση
του μεγέθους τω ν αριθμητικών προβλημάτων. Αντίθετα, αν λόγω της φύσης του προβλήματος
(ή έστω σιωπηρά) δεχθούμε ότι οι αριθμοί μας έχουν κάποιο σταθερό μέγεθος (π.χ. μπορούν
να χωρέσουν σε μία λέξη του υπολογιστή μας) τότε μπορούμε να τους χειριστούμε σαν μια
μονάδα. Έ τσ ι, στην Ε ισαγωγή εξετάσαμε το πρόβλημα της ταξινόμησης και δεχθήκαμε σαν
μέγεθος το πλήθος η τω ν αριθμών που ταξινομούμε και όχι το άθροισμα τω ν ψηφίων τους.
Αυτό έγινε γιατί δεχθήκαμε ότι κάθε αριθμός ήταν αρκετά μικρός ώστε να χωράει σε μία λέξη
του υπολογιστή. Σε περίπτωση που οι αριθμοί ήταν πολύ μεγάλοι (π.χ. με μέγεθος που είναι
συνάρτηση του η ) τότε το μέγεθος θα έπρεπε να είναι ο αριθμός τω ν ψηφίων τους.


2.3        Παραλλαγές της Μηχανής Turing
Η προσπάθεια για την εύρεση του «απόλυτου» υπολογιστικού μοντέλου οδήγησε τους ερευνητές
σε διάφορες επεκτάσεις της μηχανής Turing. Ό λες όμως αυτές οι προσπάθειες αποδεικνύο­
Υπολογιστικη πολυπλοκοτητα
Υπολογιστικη πολυπλοκοτητα
Υπολογιστικη πολυπλοκοτητα
Υπολογιστικη πολυπλοκοτητα
Υπολογιστικη πολυπλοκοτητα
Υπολογιστικη πολυπλοκοτητα
Υπολογιστικη πολυπλοκοτητα
Υπολογιστικη πολυπλοκοτητα
Υπολογιστικη πολυπλοκοτητα
Υπολογιστικη πολυπλοκοτητα
Υπολογιστικη πολυπλοκοτητα
Υπολογιστικη πολυπλοκοτητα
Υπολογιστικη πολυπλοκοτητα
Υπολογιστικη πολυπλοκοτητα
Υπολογιστικη πολυπλοκοτητα
Υπολογιστικη πολυπλοκοτητα
Υπολογιστικη πολυπλοκοτητα
Υπολογιστικη πολυπλοκοτητα
Υπολογιστικη πολυπλοκοτητα
Υπολογιστικη πολυπλοκοτητα
Υπολογιστικη πολυπλοκοτητα
Υπολογιστικη πολυπλοκοτητα
Υπολογιστικη πολυπλοκοτητα
Υπολογιστικη πολυπλοκοτητα
Υπολογιστικη πολυπλοκοτητα
Υπολογιστικη πολυπλοκοτητα
Υπολογιστικη πολυπλοκοτητα
Υπολογιστικη πολυπλοκοτητα
Υπολογιστικη πολυπλοκοτητα
Υπολογιστικη πολυπλοκοτητα
Υπολογιστικη πολυπλοκοτητα
Υπολογιστικη πολυπλοκοτητα
Υπολογιστικη πολυπλοκοτητα
Υπολογιστικη πολυπλοκοτητα
Υπολογιστικη πολυπλοκοτητα
Υπολογιστικη πολυπλοκοτητα
Υπολογιστικη πολυπλοκοτητα
Υπολογιστικη πολυπλοκοτητα
Υπολογιστικη πολυπλοκοτητα
Υπολογιστικη πολυπλοκοτητα
Υπολογιστικη πολυπλοκοτητα
Υπολογιστικη πολυπλοκοτητα
Υπολογιστικη πολυπλοκοτητα
Υπολογιστικη πολυπλοκοτητα
Υπολογιστικη πολυπλοκοτητα
Υπολογιστικη πολυπλοκοτητα
Υπολογιστικη πολυπλοκοτητα
Υπολογιστικη πολυπλοκοτητα
Υπολογιστικη πολυπλοκοτητα
Υπολογιστικη πολυπλοκοτητα
Υπολογιστικη πολυπλοκοτητα
Υπολογιστικη πολυπλοκοτητα
Υπολογιστικη πολυπλοκοτητα
Υπολογιστικη πολυπλοκοτητα
Υπολογιστικη πολυπλοκοτητα
Υπολογιστικη πολυπλοκοτητα
Υπολογιστικη πολυπλοκοτητα
Υπολογιστικη πολυπλοκοτητα
Υπολογιστικη πολυπλοκοτητα
Υπολογιστικη πολυπλοκοτητα
Υπολογιστικη πολυπλοκοτητα
Υπολογιστικη πολυπλοκοτητα
Υπολογιστικη πολυπλοκοτητα
Υπολογιστικη πολυπλοκοτητα
Υπολογιστικη πολυπλοκοτητα
Υπολογιστικη πολυπλοκοτητα
Υπολογιστικη πολυπλοκοτητα
Υπολογιστικη πολυπλοκοτητα
Υπολογιστικη πολυπλοκοτητα
Υπολογιστικη πολυπλοκοτητα
Υπολογιστικη πολυπλοκοτητα
Υπολογιστικη πολυπλοκοτητα
Υπολογιστικη πολυπλοκοτητα
Υπολογιστικη πολυπλοκοτητα
Υπολογιστικη πολυπλοκοτητα
Υπολογιστικη πολυπλοκοτητα

More Related Content

What's hot

σχολικές σημειώσεις άλγεβρας α΄λυκείου
σχολικές σημειώσεις άλγεβρας α΄λυκείουσχολικές σημειώσεις άλγεβρας α΄λυκείου
σχολικές σημειώσεις άλγεβρας α΄λυκείου
keratea1
 
Fortran notes panepistimio_kritis
Fortran notes panepistimio_kritisFortran notes panepistimio_kritis
Fortran notes panepistimio_kritis
Fanis Vlazakis
 
1 real simeiwseis_2010-11
1 real simeiwseis_2010-111 real simeiwseis_2010-11
1 real simeiwseis_2010-11
Christos Loizos
 
επαναληπτικο διαγωνισμα χημειας β' γυμνασιου
επαναληπτικο διαγωνισμα χημειας β' γυμνασιουεπαναληπτικο διαγωνισμα χημειας β' γυμνασιου
επαναληπτικο διαγωνισμα χημειας β' γυμνασιουΚΑΤΕΡΙΝΑ ΑΡΩΝΗ
 
Δημιουργώ παιχνίδια στο Scratch - Προγραμματισμός στο Scratch
Δημιουργώ παιχνίδια στο Scratch - Προγραμματισμός στο ScratchΔημιουργώ παιχνίδια στο Scratch - Προγραμματισμός στο Scratch
Δημιουργώ παιχνίδια στο Scratch - Προγραμματισμός στο Scratch
George Palaigeorgiou
 
Brief notes b
Brief notes bBrief notes b
ตย.แบบประเมิน คุรุสภา
ตย.แบบประเมิน คุรุสภา ตย.แบบประเมิน คุรุสภา
ตย.แบบประเมิน คุรุสภา
00250300
 
Python tutorial by example
Python tutorial by examplePython tutorial by example
Python tutorial by example
Dimitris Kyrgiafinis
 
Η εκπαιδευτική αξιοποίηση των ιστολογίων στα Σχολεία Δεύτερης Ευκαιρίας
Η εκπαιδευτική αξιοποίηση των ιστολογίων στα Σχολεία Δεύτερης ΕυκαιρίαςΗ εκπαιδευτική αξιοποίηση των ιστολογίων στα Σχολεία Δεύτερης Ευκαιρίας
Η εκπαιδευτική αξιοποίηση των ιστολογίων στα Σχολεία Δεύτερης Ευκαιρίας
ckaint
 
Βιβλίο: Νεοελληνική Γλώσσα (Ά Γυμνασίου)
Βιβλίο: Νεοελληνική Γλώσσα (Ά Γυμνασίου)Βιβλίο: Νεοελληνική Γλώσσα (Ά Γυμνασίου)
Βιβλίο: Νεοελληνική Γλώσσα (Ά Γυμνασίου)
Angel
 
εγχειρίδιο χρήσης αβακίου ιι
εγχειρίδιο χρήσης αβακίου ιιεγχειρίδιο χρήσης αβακίου ιι
εγχειρίδιο χρήσης αβακίου ιιfosimeon
 
εγχειρίδιο χρήσης αβακίου ιι
εγχειρίδιο χρήσης αβακίου ιιεγχειρίδιο χρήσης αβακίου ιι
εγχειρίδιο χρήσης αβακίου ιιGREGORA65
 
σχεδιασμός μαθήματος σταυρούλα κουρή
σχεδιασμός μαθήματος σταυρούλα κουρήσχεδιασμός μαθήματος σταυρούλα κουρή
σχεδιασμός μαθήματος σταυρούλα κουρήstavroulakour
 

What's hot (20)

σχολικές σημειώσεις άλγεβρας α΄λυκείου
σχολικές σημειώσεις άλγεβρας α΄λυκείουσχολικές σημειώσεις άλγεβρας α΄λυκείου
σχολικές σημειώσεις άλγεβρας α΄λυκείου
 
Fortran notes panepistimio_kritis
Fortran notes panepistimio_kritisFortran notes panepistimio_kritis
Fortran notes panepistimio_kritis
 
1 real simeiwseis_2010-11
1 real simeiwseis_2010-111 real simeiwseis_2010-11
1 real simeiwseis_2010-11
 
επαναληπτικο διαγωνισμα χημειας β' γυμνασιου
επαναληπτικο διαγωνισμα χημειας β' γυμνασιουεπαναληπτικο διαγωνισμα χημειας β' γυμνασιου
επαναληπτικο διαγωνισμα χημειας β' γυμνασιου
 
Δημιουργώ παιχνίδια στο Scratch - Προγραμματισμός στο Scratch
Δημιουργώ παιχνίδια στο Scratch - Προγραμματισμός στο ScratchΔημιουργώ παιχνίδια στο Scratch - Προγραμματισμός στο Scratch
Δημιουργώ παιχνίδια στο Scratch - Προγραμματισμός στο Scratch
 
Brief notes b
Brief notes bBrief notes b
Brief notes b
 
ตย.แบบประเมิน คุรุสภา
ตย.แบบประเมิน คุรุสภา ตย.แบบประเมิน คุรุสภา
ตย.แบบประเมิน คุรุสภา
 
Thesis
ThesisThesis
Thesis
 
Master Thesis
Master ThesisMaster Thesis
Master Thesis
 
Python tutorial by example
Python tutorial by examplePython tutorial by example
Python tutorial by example
 
Master_Thesis
Master_ThesisMaster_Thesis
Master_Thesis
 
Ataxifinal
AtaxifinalAtaxifinal
Ataxifinal
 
επίθετα σε –ης , ες
επίθετα σε –ης ,  εςεπίθετα σε –ης ,  ες
επίθετα σε –ης , ες
 
Η εκπαιδευτική αξιοποίηση των ιστολογίων στα Σχολεία Δεύτερης Ευκαιρίας
Η εκπαιδευτική αξιοποίηση των ιστολογίων στα Σχολεία Δεύτερης ΕυκαιρίαςΗ εκπαιδευτική αξιοποίηση των ιστολογίων στα Σχολεία Δεύτερης Ευκαιρίας
Η εκπαιδευτική αξιοποίηση των ιστολογίων στα Σχολεία Δεύτερης Ευκαιρίας
 
Diploma thesis
Diploma thesisDiploma thesis
Diploma thesis
 
η ευθεια στο επιπεδο εργασια 1
η ευθεια στο επιπεδο εργασια 1η ευθεια στο επιπεδο εργασια 1
η ευθεια στο επιπεδο εργασια 1
 
Βιβλίο: Νεοελληνική Γλώσσα (Ά Γυμνασίου)
Βιβλίο: Νεοελληνική Γλώσσα (Ά Γυμνασίου)Βιβλίο: Νεοελληνική Γλώσσα (Ά Γυμνασίου)
Βιβλίο: Νεοελληνική Γλώσσα (Ά Γυμνασίου)
 
εγχειρίδιο χρήσης αβακίου ιι
εγχειρίδιο χρήσης αβακίου ιιεγχειρίδιο χρήσης αβακίου ιι
εγχειρίδιο χρήσης αβακίου ιι
 
εγχειρίδιο χρήσης αβακίου ιι
εγχειρίδιο χρήσης αβακίου ιιεγχειρίδιο χρήσης αβακίου ιι
εγχειρίδιο χρήσης αβακίου ιι
 
σχεδιασμός μαθήματος σταυρούλα κουρή
σχεδιασμός μαθήματος σταυρούλα κουρήσχεδιασμός μαθήματος σταυρούλα κουρή
σχεδιασμός μαθήματος σταυρούλα κουρή
 

Viewers also liked

edJEWcon Keynote
edJEWcon KeynoteedJEWcon Keynote
edJEWcon Keynote
Silvia Rosenthal Tolisano
 
Ψηφιακές Πρακτικές
Ψηφιακές ΠρακτικέςΨηφιακές Πρακτικές
Ψηφιακές ΠρακτικέςElena Elliniadou
 
JCG Intro Powerpoint
JCG Intro PowerpointJCG Intro Powerpoint
JCG Intro PowerpointJoyce Golden
 
το «ανοιγμα» του σχολειου
το «ανοιγμα» του σχολειουτο «ανοιγμα» του σχολειου
το «ανοιγμα» του σχολειουDimitra Fytili
 
Δίκτυο Προσωπικής Μάθησης στην Εκπαίδευση
Δίκτυο Προσωπικής Μάθησης στην ΕκπαίδευσηΔίκτυο Προσωπικής Μάθησης στην Εκπαίδευση
Δίκτυο Προσωπικής Μάθησης στην ΕκπαίδευσηElena Elliniadou
 
Feco dist sys-2-v1
Feco dist sys-2-v1Feco dist sys-2-v1
Feco dist sys-2-v1L Dr
 
Διαστρικές Αποστολές 2014
Διαστρικές Αποστολές 2014Διαστρικές Αποστολές 2014
Διαστρικές Αποστολές 2014
Elena Elliniadou
 
Punim seminarik tik
Punim seminarik tikPunim seminarik tik
Punim seminarik tik
BJashari
 
Rrjeta kompjuterike leksion 1
Rrjeta kompjuterike leksion 1  Rrjeta kompjuterike leksion 1
Rrjeta kompjuterike leksion 1 Xhendris Ismaili
 
Supsi dti abstract_informatica_2012
Supsi dti abstract_informatica_2012Supsi dti abstract_informatica_2012
Supsi dti abstract_informatica_2012L Dr
 
Rrjeta kompjuterike leksion 4
Rrjeta kompjuterike leksion 4  Rrjeta kompjuterike leksion 4
Rrjeta kompjuterike leksion 4 Xhendris Ismaili
 
Supsi dti abstract_info_2010
Supsi dti abstract_info_2010Supsi dti abstract_info_2010
Supsi dti abstract_info_2010L Dr
 
Study: The Future of VR, AR and Self-Driving Cars
Study: The Future of VR, AR and Self-Driving CarsStudy: The Future of VR, AR and Self-Driving Cars
Study: The Future of VR, AR and Self-Driving Cars
LinkedIn
 

Viewers also liked (15)

edJEWcon Keynote
edJEWcon KeynoteedJEWcon Keynote
edJEWcon Keynote
 
Ψηφιακές Πρακτικές
Ψηφιακές ΠρακτικέςΨηφιακές Πρακτικές
Ψηφιακές Πρακτικές
 
JCG Intro Powerpoint
JCG Intro PowerpointJCG Intro Powerpoint
JCG Intro Powerpoint
 
το «ανοιγμα» του σχολειου
το «ανοιγμα» του σχολειουτο «ανοιγμα» του σχολειου
το «ανοιγμα» του σχολειου
 
Eisagwgi
EisagwgiEisagwgi
Eisagwgi
 
Δίκτυο Προσωπικής Μάθησης στην Εκπαίδευση
Δίκτυο Προσωπικής Μάθησης στην ΕκπαίδευσηΔίκτυο Προσωπικής Μάθησης στην Εκπαίδευση
Δίκτυο Προσωπικής Μάθησης στην Εκπαίδευση
 
Feco dist sys-2-v1
Feco dist sys-2-v1Feco dist sys-2-v1
Feco dist sys-2-v1
 
Διαστρικές Αποστολές 2014
Διαστρικές Αποστολές 2014Διαστρικές Αποστολές 2014
Διαστρικές Αποστολές 2014
 
Punim seminarik tik
Punim seminarik tikPunim seminarik tik
Punim seminarik tik
 
Σχολικη Κοινωνικη Ζωη Πολυμερης
Σχολικη Κοινωνικη Ζωη  ΠολυμερηςΣχολικη Κοινωνικη Ζωη  Πολυμερης
Σχολικη Κοινωνικη Ζωη Πολυμερης
 
Rrjeta kompjuterike leksion 1
Rrjeta kompjuterike leksion 1  Rrjeta kompjuterike leksion 1
Rrjeta kompjuterike leksion 1
 
Supsi dti abstract_informatica_2012
Supsi dti abstract_informatica_2012Supsi dti abstract_informatica_2012
Supsi dti abstract_informatica_2012
 
Rrjeta kompjuterike leksion 4
Rrjeta kompjuterike leksion 4  Rrjeta kompjuterike leksion 4
Rrjeta kompjuterike leksion 4
 
Supsi dti abstract_info_2010
Supsi dti abstract_info_2010Supsi dti abstract_info_2010
Supsi dti abstract_info_2010
 
Study: The Future of VR, AR and Self-Driving Cars
Study: The Future of VR, AR and Self-Driving CarsStudy: The Future of VR, AR and Self-Driving Cars
Study: The Future of VR, AR and Self-Driving Cars
 

Similar to Υπολογιστικη πολυπλοκοτητα

Επιχειρησιακή αξιολόγηση πρόβλεψης κινδύνου και συμπεριφοράς πυρκαγιών για τη...
Επιχειρησιακή αξιολόγηση πρόβλεψης κινδύνου και συμπεριφοράς πυρκαγιών για τη...Επιχειρησιακή αξιολόγηση πρόβλεψης κινδύνου και συμπεριφοράς πυρκαγιών για τη...
Επιχειρησιακή αξιολόγηση πρόβλεψης κινδύνου και συμπεριφοράς πυρκαγιών για τη...
Vasilis Kleidaras
 
Τσικολάτας Α. (2004). Ανάλυση Οικονομικών Καταστάσεων. Αριθμοδείκτες. Case St...
Τσικολάτας Α. (2004). Ανάλυση Οικονομικών Καταστάσεων. Αριθμοδείκτες. Case St...Τσικολάτας Α. (2004). Ανάλυση Οικονομικών Καταστάσεων. Αριθμοδείκτες. Case St...
Τσικολάτας Α. (2004). Ανάλυση Οικονομικών Καταστάσεων. Αριθμοδείκτες. Case St...
Alexandros Tsikolatas
 
Yliko kse geniko_meros_c_201304 (1)
Yliko kse geniko_meros_c_201304 (1)Yliko kse geniko_meros_c_201304 (1)
Yliko kse geniko_meros_c_201304 (1)Xyla Eleni
 
Yliko kse geniko_meros_c_201304 (1)
Yliko kse geniko_meros_c_201304 (1)Yliko kse geniko_meros_c_201304 (1)
Yliko kse geniko_meros_c_201304 (1)Xyla Eleni
 
Eπιμορφωτικό Yλικό του Γενικού Μέρους της επιμόρφωσης β΄επιπέδου ΠΕ19/20
Eπιμορφωτικό Yλικό του Γενικού Μέρους της επιμόρφωσης β΄επιπέδου ΠΕ19/20Eπιμορφωτικό Yλικό του Γενικού Μέρους της επιμόρφωσης β΄επιπέδου ΠΕ19/20
Eπιμορφωτικό Yλικό του Γενικού Μέρους της επιμόρφωσης β΄επιπέδου ΠΕ19/20Vasilis Drimtzias
 
Υλικό ΚΣΕ - Γενικό Μέρος
Υλικό ΚΣΕ - Γενικό ΜέροςΥλικό ΚΣΕ - Γενικό Μέρος
Υλικό ΚΣΕ - Γενικό Μέρος
Κοσμάς Αθανασιάδης
 
ΕΠΙΜΟΡΦΩΣΗ Β ΕΠΙΠΕΔΟΥ ΓΕΝΙΚΟ ΜΕΡΟΣ 2013
ΕΠΙΜΟΡΦΩΣΗ Β ΕΠΙΠΕΔΟΥ ΓΕΝΙΚΟ ΜΕΡΟΣ 2013 ΕΠΙΜΟΡΦΩΣΗ Β ΕΠΙΠΕΔΟΥ ΓΕΝΙΚΟ ΜΕΡΟΣ 2013
ΕΠΙΜΟΡΦΩΣΗ Β ΕΠΙΠΕΔΟΥ ΓΕΝΙΚΟ ΜΕΡΟΣ 2013 Xyla Eleni
 
Εισαγωγή στις Αρχές της Επιστήμης των Η/Υ - Β' τάξη ΓΕΛ
Εισαγωγή στις Αρχές της Επιστήμης των Η/Υ - Β' τάξη ΓΕΛΕισαγωγή στις Αρχές της Επιστήμης των Η/Υ - Β' τάξη ΓΕΛ
Εισαγωγή στις Αρχές της Επιστήμης των Η/Υ - Β' τάξη ΓΕΛ
1o Γενικό Λύκειο Ηγουμενίτσας
 
φύλλο εργασίας
φύλλο εργασίαςφύλλο εργασίας
φύλλο εργασίας
pliakas
 
Manual moodle 1.9.5
Manual moodle 1.9.5Manual moodle 1.9.5
Manual moodle 1.9.5isildor
 
Αρχεία Βοήθειας του GeoGebra
Αρχεία Βοήθειας του GeoGebraΑρχεία Βοήθειας του GeoGebra
Αρχεία Βοήθειας του GeoGebramakrib
 
Ekfrash ekthesh
Ekfrash ektheshEkfrash ekthesh
Ekfrash ektheshkwlwglw
 
Εισαγωγή στις Αρχές της επιστήμης Υπολογιστών Β΄ Λυκείου(βιβλίο)
Εισαγωγή στις Αρχές της επιστήμης Υπολογιστών Β΄ Λυκείου(βιβλίο)Εισαγωγή στις Αρχές της επιστήμης Υπολογιστών Β΄ Λυκείου(βιβλίο)
Εισαγωγή στις Αρχές της επιστήμης Υπολογιστών Β΄ Λυκείου(βιβλίο)
xpapas
 
Eisagogi epistimi ypologiston
Eisagogi epistimi ypologistonEisagogi epistimi ypologiston
Eisagogi epistimi ypologiston
leftos21
 
Eisagogi epistimi ypologiston
Eisagogi epistimi ypologistonEisagogi epistimi ypologiston
Eisagogi epistimi ypologiston
Foteinh Damianou
 
Β ΕΠΑΛ ΒΙΒΛΙΟ - Eisagogi epistimi ypologiston
Β ΕΠΑΛ ΒΙΒΛΙΟ - Eisagogi epistimi ypologiston Β ΕΠΑΛ ΒΙΒΛΙΟ - Eisagogi epistimi ypologiston
Β ΕΠΑΛ ΒΙΒΛΙΟ - Eisagogi epistimi ypologiston
dannieza
 
Labwe interactive whiteboard software user manual gr
Labwe interactive whiteboard software user manual  grLabwe interactive whiteboard software user manual  gr
Labwe interactive whiteboard software user manual gr
pliakas
 
Ασκληπιός™ Finance (Διαχειρίσεις) - Κλείσιμο Έτους
Ασκληπιός™ Finance (Διαχειρίσεις) - Κλείσιμο ΈτουςΑσκληπιός™ Finance (Διαχειρίσεις) - Κλείσιμο Έτους
Ασκληπιός™ Finance (Διαχειρίσεις) - Κλείσιμο Έτους
bgrigoriadis
 
τα σωστά ελληνικά
τα σωστά ελληνικάτα σωστά ελληνικά
τα σωστά ελληνικάkwlwglw
 

Similar to Υπολογιστικη πολυπλοκοτητα (20)

Επιχειρησιακή αξιολόγηση πρόβλεψης κινδύνου και συμπεριφοράς πυρκαγιών για τη...
Επιχειρησιακή αξιολόγηση πρόβλεψης κινδύνου και συμπεριφοράς πυρκαγιών για τη...Επιχειρησιακή αξιολόγηση πρόβλεψης κινδύνου και συμπεριφοράς πυρκαγιών για τη...
Επιχειρησιακή αξιολόγηση πρόβλεψης κινδύνου και συμπεριφοράς πυρκαγιών για τη...
 
Τσικολάτας Α. (2004). Ανάλυση Οικονομικών Καταστάσεων. Αριθμοδείκτες. Case St...
Τσικολάτας Α. (2004). Ανάλυση Οικονομικών Καταστάσεων. Αριθμοδείκτες. Case St...Τσικολάτας Α. (2004). Ανάλυση Οικονομικών Καταστάσεων. Αριθμοδείκτες. Case St...
Τσικολάτας Α. (2004). Ανάλυση Οικονομικών Καταστάσεων. Αριθμοδείκτες. Case St...
 
algorithmiki-epilusi-duskolon
algorithmiki-epilusi-duskolonalgorithmiki-epilusi-duskolon
algorithmiki-epilusi-duskolon
 
Yliko kse geniko_meros_c_201304 (1)
Yliko kse geniko_meros_c_201304 (1)Yliko kse geniko_meros_c_201304 (1)
Yliko kse geniko_meros_c_201304 (1)
 
Yliko kse geniko_meros_c_201304 (1)
Yliko kse geniko_meros_c_201304 (1)Yliko kse geniko_meros_c_201304 (1)
Yliko kse geniko_meros_c_201304 (1)
 
Eπιμορφωτικό Yλικό του Γενικού Μέρους της επιμόρφωσης β΄επιπέδου ΠΕ19/20
Eπιμορφωτικό Yλικό του Γενικού Μέρους της επιμόρφωσης β΄επιπέδου ΠΕ19/20Eπιμορφωτικό Yλικό του Γενικού Μέρους της επιμόρφωσης β΄επιπέδου ΠΕ19/20
Eπιμορφωτικό Yλικό του Γενικού Μέρους της επιμόρφωσης β΄επιπέδου ΠΕ19/20
 
Υλικό ΚΣΕ - Γενικό Μέρος
Υλικό ΚΣΕ - Γενικό ΜέροςΥλικό ΚΣΕ - Γενικό Μέρος
Υλικό ΚΣΕ - Γενικό Μέρος
 
ΕΠΙΜΟΡΦΩΣΗ Β ΕΠΙΠΕΔΟΥ ΓΕΝΙΚΟ ΜΕΡΟΣ 2013
ΕΠΙΜΟΡΦΩΣΗ Β ΕΠΙΠΕΔΟΥ ΓΕΝΙΚΟ ΜΕΡΟΣ 2013 ΕΠΙΜΟΡΦΩΣΗ Β ΕΠΙΠΕΔΟΥ ΓΕΝΙΚΟ ΜΕΡΟΣ 2013
ΕΠΙΜΟΡΦΩΣΗ Β ΕΠΙΠΕΔΟΥ ΓΕΝΙΚΟ ΜΕΡΟΣ 2013
 
Εισαγωγή στις Αρχές της Επιστήμης των Η/Υ - Β' τάξη ΓΕΛ
Εισαγωγή στις Αρχές της Επιστήμης των Η/Υ - Β' τάξη ΓΕΛΕισαγωγή στις Αρχές της Επιστήμης των Η/Υ - Β' τάξη ΓΕΛ
Εισαγωγή στις Αρχές της Επιστήμης των Η/Υ - Β' τάξη ΓΕΛ
 
φύλλο εργασίας
φύλλο εργασίαςφύλλο εργασίας
φύλλο εργασίας
 
Manual moodle 1.9.5
Manual moodle 1.9.5Manual moodle 1.9.5
Manual moodle 1.9.5
 
Αρχεία Βοήθειας του GeoGebra
Αρχεία Βοήθειας του GeoGebraΑρχεία Βοήθειας του GeoGebra
Αρχεία Βοήθειας του GeoGebra
 
Ekfrash ekthesh
Ekfrash ektheshEkfrash ekthesh
Ekfrash ekthesh
 
Εισαγωγή στις Αρχές της επιστήμης Υπολογιστών Β΄ Λυκείου(βιβλίο)
Εισαγωγή στις Αρχές της επιστήμης Υπολογιστών Β΄ Λυκείου(βιβλίο)Εισαγωγή στις Αρχές της επιστήμης Υπολογιστών Β΄ Λυκείου(βιβλίο)
Εισαγωγή στις Αρχές της επιστήμης Υπολογιστών Β΄ Λυκείου(βιβλίο)
 
Eisagogi epistimi ypologiston
Eisagogi epistimi ypologistonEisagogi epistimi ypologiston
Eisagogi epistimi ypologiston
 
Eisagogi epistimi ypologiston
Eisagogi epistimi ypologistonEisagogi epistimi ypologiston
Eisagogi epistimi ypologiston
 
Β ΕΠΑΛ ΒΙΒΛΙΟ - Eisagogi epistimi ypologiston
Β ΕΠΑΛ ΒΙΒΛΙΟ - Eisagogi epistimi ypologiston Β ΕΠΑΛ ΒΙΒΛΙΟ - Eisagogi epistimi ypologiston
Β ΕΠΑΛ ΒΙΒΛΙΟ - Eisagogi epistimi ypologiston
 
Labwe interactive whiteboard software user manual gr
Labwe interactive whiteboard software user manual  grLabwe interactive whiteboard software user manual  gr
Labwe interactive whiteboard software user manual gr
 
Ασκληπιός™ Finance (Διαχειρίσεις) - Κλείσιμο Έτους
Ασκληπιός™ Finance (Διαχειρίσεις) - Κλείσιμο ΈτουςΑσκληπιός™ Finance (Διαχειρίσεις) - Κλείσιμο Έτους
Ασκληπιός™ Finance (Διαχειρίσεις) - Κλείσιμο Έτους
 
τα σωστά ελληνικά
τα σωστά ελληνικάτα σωστά ελληνικά
τα σωστά ελληνικά
 

Υπολογιστικη πολυπλοκοτητα

  • 1. Πανεπιστήμιο Πατρών - Σχολή θετικών Επιστημών Τμήμα Μαθηματικών Σ ημειώσεις στο μάθημα Υ π ο λ ο γ ισ τ ικ ή Π ο λ υ π λ ο κ ο τ η τ α Δημήτριος I. Καββαδίας Επίκουρος Καθηγητής Πάτρα, Οκτώβριος 1999
  • 2.
  • 3. Πρόλογος Οι σημειώσεις αυτές περιλαμβάνουν το μεγαλύτερο μέρος της ύλης του προπτυχιακού μαθήμα­ τος «Υπολογιστική Πολυπλοκότητα» που διδάσκεται στο 4ο έτος του Τμήματος Μ αθηματικών του Πανεπιστημίου Πατρών. Η διάρθρωση τους είναι η ακόλουθη: Στο πρώτο κεφάλαιο δίδεται μία εισαγω γή στις έννοιες της πολυπλοκότητας αλγορίθμων και προβλημάτων για διάφορα μέτρα πολυπλοκότητας. Το κεφάλαιο 2 περιγράφει σε βάθος το βασικό υπολογιστικό μοντέλο που χρησιμοποιείται, τη μηχανή Turing, και τις διάφορες παραλλαγές του. Δ ίδονται ορισμοί της πολυπλοκότητας χρόνου και χώρου αλγορίθμων και προβλημάτων. Το επόμενο κεφάλαιο είναι αφιερωμένο στις γενικ ές σχέσεις μεταξύ κλάσεων πολυπλοκότητας. Σε αυτό περιλαμβάνονται όλες οι γνω σ τές σχέσεις όταν δεν υπάρχουν περιο­ ρισμοί στην συνάρτηση πολυπλοκότητας. Το κεφάλαιο 4 αναφέρει τις πολύ κρίσιμες έννοιες της αναγω γής και της πληρότητας παρουσιάζοντας πλήρη προβλήματα για τις κλάσεις NL, Ρ και ΝΡ. Τέλος το κεφάλαιο 5 είναι αφιερωμένο στην ΝΡ-πληρότητα. Παρουσιάζεται πληθώρα προβλημάτων και αποδεικνύεται η πληρότητα τους για την κλάση ΝΡ. Είμαι ευγνώ μ ω ν στον μεταπτυχιακό φοιτητή του Τμήματος Μ ηχανικών Η λεκτρονικών Υ πολογιστώ ν & Πληροφορικής του Πανεπιστημίου Πατρών, κ. Ηλία Κ. Σταυρόπουλο για την ουσιαστική του βοήθεια. Σε αυτόν οφείλεται το μεγαλύτερο μέρος του κεφαλαίου 5 και η επιμέλεια όλων τω ν σχημάτων και της παρουσίασης. Δημήτρης Καββαδίας Πάτρα, Οκτώβριος 1999 ι
  • 4.
  • 5. σ τ ο ν Γ ια ν ν ά κ η
  • 6.
  • 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 ν
  • 8. 4 Π ληρότητα 53 4.1 Α ν α γ ω γ έ ς ..................................................................................................................................... 53 4.2 Π λη ρότη τα..................................................................................................................................... 55 4.3 Μερικά πλήρη π ρ ο β λ ή μ α τ α .................................................................................................... 57 5 Ν Ρ—πλήρη προβλήμ ατα 65 5.1 Παραλλαγές του SAT ............................................................................................................... 65 5.2 Προβλήματα από Θεωρία Γ ρ α φ η μ ά τω ν............................................................................. 71 5.3 Ά λλα πρ οβλήμ ατα...................................................................................................................... 79 5.4 Ασθενής ΝΡ-πληρότητα και ψευδοπολυωνυμικοί αλγόριθμοι ................................. 82 5.5 Α ποδεικνύοντας Ν Ρ-πληρότητα............................................................................................ 86 5.6 Α σ κ ή σ εις......................................................................................................................................... 87 Βιβλιογραφία 91
  • 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). Δ ιαισθητικά η διαμόρφωση είναι το σύνολο τω ν πληροφοριών που μονοσήμαντα προσδιορίζουν
  • 20. 12 ΚΕΦΑΛΑΙΟ 2. Η ΜΗΧΑΝΗ TURING την εξέλιξη του υπολογισμού μετά από κάποιο βήμα. Ισοδύναμα μπορούμε να δούμε την διαμόρφωση σαν μία «φωτογραφία» της μηχανής μας μία χρονική στιγμή. Δ εν είναι δύσκολο να αντιληφθούμε ότι οι παράμετροι που επηρεάζουν τον υπολογισμό είναι η κατάσταση, το περιεχόμενο της ταινίας και η θέση της κεφαλής. Για ευκολία τις δύο τελευταίες πληροφορίες τις περιγράφουμε με δύο συμβολοσειρές u και υ. Η u είναι η συμβολοσειρά από το σύμβολο t> μέχρι και το σύμβολο κάτω από την κεφαλή. Η ν αρχίζει από το σύμβολο δεξιά της κεφαλής μέχρις εκεί που αρχίζει η άπειρη σειρά τω ν κενώ ν. Επομένως μια διαμόρφωση C είναι ένα στοιχείο του Καρτεσιανού γινομένου Κ X (Σ X (Σ {!?})*. Στα παραδείγματα που ακολουθούν περιγράφεται η εξέλιξη του υπολογισμού μιας μηχανής με παράθεση των διαδοχικών διαμορφώσεων. Ας δώσουμε τώρα ένα παράδειγμα μιας μηχανής Turing που μετά από πεπερασμένο αριθμό βημάτων τερματίζει στην κατάσταση ^ναι ή <Ζοχι· Π α ρ ά δ ειγμ α 2.1 Έ σ τω η μηχανή Turing Μ = ( Κ , Σ , δ , β ) όπου Σ = { |> t>,α,δ}, Κ = {s}, , και δ η συνάρτηση μετάβασης που ορίζεται σύμφωνα με τον παρακάτω πίνακα: q σ % ,σ ) s t> (s, t>, — y) s a (< n a i , a, — Z ) s b (s, b, — y) T s > © o > < 1 Ας δούμε τις μεταβάσεις της μηχανής Μ με είσοδο, για παράδειγμα την συμβολοσειρά bbaab, καταγράφοντας τις διαδοχικές διαμορφώσεις της: (s, >} bbaab ) — ι y (s, t>b} baab) — i y (s, t>bb} a a b ) — ι y (s, >bba} a b ) 1 — > (<?nai, t>bba,ab) Η μηχανή Μ λοιπόν, μετά από ένα αριθμό βημάτων, τερματίζει στην κατάσταση «ΝΑΙ». Ας δούμε την λειτουργία της μηχανής για μια ακόμα είσοδο, π.χ. για την συμβολοσειρά bbb: (s, t>, bbb) (s, t>b, bb) (s, I >bb, b) (s, >bbb, t>) (<?oxi, >bbb,>) Με είσοδο την συμβολοσειρά bbb η μηχανή Μ τερματίζει στην κατάσταση «ΟΧΙ». Είναι εύκολο να δει κανείς ότι η μηχανή Μ αποδέχεται όλες τις συμβολοσειρές που περιέχουν τον χαρακτήρα α και απορρίπτει αυτές που περιέχουν μόνο b.
  • 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. Ό λες όμως αυτές οι προσπάθειες αποδεικνύο­