Download as pdf or txt
Download as pdf or txt
You are on page 1of 84

Θεωρία Υπολογισμού

Μηχανές Turing

Παναγιώτης Ρουβέλας
22 Ιανουαρίου 2022

Τμήμα Μηχανικών Πληροφορικής και Υπολογιστών, Πανεπιστήμιο Δυτικής Αττικής


Μηχανές Turing
Φτάνοντας στον στόχο μας

Ο στόχος που είχαμε θέσει εξαρχής στο μάθημα ήταν η αυστηροποίηση της
έννοιας του αλγορίθμου. Για να το πετύχουμε αυτό, εισάγαμε σταδιακά όλο
και πιο ισχυρά υπολογιστικά μοντέλα.
Δεν προσεγγίσαμε ωστόσο ακόμα πλήρως την έννοια αυτή. Για παράδειγμα,
απλές γλώσσες όπως η {ai bi ci : i ≥ 0} δεν γίνονται δεκτές από κανένα
υπολογιστικό μοντέλο που έχουμε ορίσει ως τώρα, παρότι υπάρχουν
μηχανικοί τρόποι ελέγχου του πότε μία συμβολοσειρά ανήκει στις γλώσσες
αυτές.

1
Φτάνοντας στον στόχο μας

Στην ενότητα αυτή θα εισάγουμε τις μηχανές Turing, ένα υπολογιστικό


μοντέλο που θα χαρακτηρίσει επιτέλους πλήρως την έννοια του αλγορίθμου.
Θα δείξουμε δηλαδή ότι ουσιαστικά
καθετί που είναι αλγοριθμικά υπολογίσιμο είναι υπολογίσιμο από μία
μηχανή Turing.

Ένα βασικό επιχείρημα υπέρ της θέσης αυτής είναι το γεγονός ότι κάθε
ισχυροποίηση1 της πρότυπης μηχανής Turing παραμένει ισοδύναμη σε
υπολογιστική ισχύ με την πρότυπη μηχανή Turing.

1
Στο πλαίσιο πάντα μίας διαισθητικής προσέγγισης της υπολογισιμότητας.

2
Περιγραφή μηχανής Turing

Η μηχανή Turing αποτελείται από

• την ταινία με αριστερό άκρο αλλά χωρίς δεξί άκρο (που περιέχει την
πεπερασμένου μήκους είσοδο),
• την κεφαλή ανάγνωσης/εγγραφής που διαβάζει αλλά και γράφει στην
ταινία (η κεφαλή μπορεί να μετακινηθεί είτε προς τα αριστερά είτε προς
τα δεξιά),

3
Περιγραφή μηχανής Turing

• τον πεπερασμένο έλεγχο που σε κάθε χρονική στιγμή βρίσκεται σε μία


συγκεκριμένη κατάσταση και ανάλογα με τη συνάρτηση μετάβασης (και
ενδεχομένως το σύμβολο που διαβάζει η κεφαλή κάθε φορά)
μεταβαίνει σε μία καινούργια κατάσταση αφού μετακινήσει την κεφαλή
αριστερά (αν δεν έχει φτάσει στο αριστερό άκρο) ή δεξιά, ή γράψει
κάποιο σύμβολο στην ταινία.

4
Αυστηρός ορισμός μηχανής Turing

Ορισμός
Μηχανή Turing ονομάζουμε κάθε πεντάδα M = (K, Σ, δ, s, H) όπου

• K είναι το πεπερασμένο σύνολο καταστάσεων,


• Σ είναι αλφάβητο, το οποίο περιέχει το κενό σύμβολο ⊔ και το σύμβολο
αριστερού άκρου ▷, και δεν περιέχει τα σύμβολα → και ←,
• s ∈ K είναι η αρχική κατάσταση,
• H ⊆ K είναι το σύνολο των καταστάσεων τερματισμού,
• δ, η συνάρτηση μετάβασης, είναι μία συνάρτηση από το (K − H) × Σ στο
K × (Σ ∪ {→, ←}) τέτοια ώστε
(i) για κάθε q ∈ K − H, υπάρχει p ∈ K έτσι ώστε
δ(q, ▷) = (p, →).
(ii) για κάθε q ∈ K − H, p ∈ K και a ∈ Σ,
δ(q, a) ̸= (p, ▷).

5
Περιγραφή λειτουργίας μηχανής Turing

Η μηχανή Turing M λειτουργεί ως εξής:

• Όταν η κεφαλή ανάγνωσης/εγγραφής βρίσκεται στο αριστερό άκρο της


ταινίας, τότε αυτή μετακινείται στα δεξιά μία θέση και η M μεταβαίνει
από την αρχική κατάσταση s στην κατάσταση δ(s, ▷).
• Αν η M βρίσκεται στην κατάσταση q ∈ / H, το σύμβολο που διαβάζει η
κεφαλή είναι το a, και δ(q, a) = (p, σ), τότε η M μεταβαίνει στην
κατάσταση p και
• αν η a είναι ▷, ή η σ είναι →, τότε μετακινεί την κεφαλή μία θέση δεξιά, ενώ
αν η σ είναι ← την μετακινεί μία θέση αριστερά.
• αν η σ είναι κάποιο σύμβολο πέρα από τα →, ←, ▷, τότε η M γράφει στην
ταινία το σύμβολο αυτό (αντικαθιστώντας το σύμβολο που περιέχει στη
θέση της κεφαλής).
• Αν q ∈ H, τότε η M τερματίζει τη λειτουργία της.

6
Παράδειγμα μηχανής Turing

Έστω μηχανή Turing M = ({q0 , q1 , h}, {a, ⊔, ▷}, δ, s, {h}) όπου η συνάρτηση
μετάβασης δ ορίζεται ως εξής:

q σ δ(q, σ)
q0 a (q1 , ⊔)
q0 ⊔ (h, ⊔)
q0 ▷ (q0 , →)
q1 a (q0 , a)
q1 ⊔ (q0 , →)
q1 ▷ (q1 , →)

Η μηχανή M αντικαθιστά κάθε σύμβολο a της ταινίας με ⊔ προς τα δεξιά του


αρχικού σημείου της κεφαλής (δηλαδή διαγράφει κάθε τέτοιο στοιχείο a)
και τερματίζει.
Παρατήρηση
Παρότι η M δεν μπορεί να βρεθεί ποτέ στην κατάσταση q1 με είσοδο a, η
τιμή δ(q1 , a) οφείλει να είναι ορισμένη σύμφωνα με τον ορισμό της
μηχανής Turing.
7
Παράδειγμα μηχανής Turing

Είναι σημαντικό να τονίσουμε ότι αντίθετα με ένα αυτόματο, μία μηχανή


Turing δεν είναι απαραίτητο να τερματίζει σε κάθε είσοδο.
Για παράδειγμα, έστω μηχανή Turing M = ({q0 , h}, {a, ⊔, ▷}, δ, s, {h}) όπου
η συνάρτηση μετάβασης δ ορίζεται ως εξής:

q σ δ(q, σ)
q0 a (q0 , ←)
q0 ⊔ (h, ⊔)
q0 ▷ (q0 , →)

Αν η ταινία στα αριστερά της αρχικής θέσης της κεφαλής περιέχει μόνο a
(πέρα από το ▷), τότε η μηχανή M δεν τερματίζει.

8
Συνολικές καταστάσεις

Όπως και στα αυτόματα, είναι σημαντικό να έχουμε έναν πρακτικό


μαθηματικό συμβολισμό για το στιγμιότυπο μίας μηχανής M.

Ορισμός
Έστω μηχανή Turing M = (K, Σ, δ, s, H). Κάθε

(q, w, u) ∈ K × ▷Σ∗ × (Σ∗ (Σ − {⊔}) ∪ {e})

ονομάζεται συνολική κατάσταση της M. Αν q ∈ H, τότε η συνολική


κατάσταση (q, w, u) ονομάζεται τερματισμένη συνολική κατάσταση της M.

Παρατήρηση
Η συνολική κατάσταση (q, w, u) ουσιαστικά κωδικοποιεί το γεγονός ότι η
M βρίσκεται σε κατάσταση q και η ταινία περιέχει τη συμβολοσειρά wu, με
την κεφαλή να βρίσκεται στη θέση του τελευταίου συμβόλου της w.

9
Παράδειγμα

Οι (q, ▷a, aba), (h, ▷⊔⊔⊔, ⊔a), (q, ▷⊔a⊔⊔, e) είναι συνολικές καταστάσεις (η
δεύτερη τερματισμένη) μίας μηχανής M = ({s, q, h}, {a, b}, δ, s, {h}).

10
Συμβολισμός ταινίας

Για πρακτικούς λόγους, υιοθετούμε έναν πιο απλό συμβολισμό για τα


περιεχόμενα της ταινίας. Συγκεκριμένα, θα συμβολίζουμε με

wav

τα περιεχόμενα της ταινίας κάποιας συνολικής κατάστασης (q, wa, u), όπου
q κατάσταση της μηχανής, w ∈ Σ∗ , v ∈ (Σ∗ (Σ − {⊔}) ∪ {e}) και a ∈ Σ. Το
υπογραμμισμένο σύμβολο υποδηλώνει τη θέση της κεφαλής.
Επομένως, αντί για (q, wa, u) μπορούμε να γράφουμε πιο απλά (q, wav). Για
παράδειγμα, οι συνολικές καταστάσεις

(q, ▷a, aba), (h, ▷⊔⊔⊔, ⊔a), (q, ▷⊔a⊔⊔, e)

μίας μηχανής M = ({s, q, h}, {a, b}, δ, s, {h}) μπορούν να γραφούν και ως

(q, ▷aaba), (h, ▷⊔⊔⊔⊔a), (q, ▷⊔a⊔⊔e).

11
Υπολογισμός μηχανής Turing

Όπως και στα αυτόματα, ο υπολογισμός μίας μηχανής Turing μπορεί να


περιγραφεί από μία ακολουθία μεταβάσεων μεταξύ συνολικών
καταστάσεων.
Ορισμός
Έστω M = (K, Σ, δ, s, H) μηχανή Turing και έστω (q1 , w1 a1 u1 ), (q2 , w2 a2 u2 )
δύο συνολικές της καταστάσεις, όπου a1 , a2 ∈ Σ. Ορίζουμε

(q1 , w1 a1 u1 ) ⊢M (q2 , w2 a2 u2 )

αν και μόνο αν για κάποιο b ∈ Σ ∪ {←, →} έχουμε δ(q1 , a1 ) = (q2 , b) και


ισχύει ακριβώς ένα από τα εξής:

(i) b ∈ Σ, w1 = w2 , u1 = u2 και a2 = b.
(ii) b =←, w1 = w2 a2 και
• u2 = a1 u1 αν a ̸= ⊔ ή u1 ̸= e, ή
• u2 = e, αν a1 = ⊔ και u1 = e.
(iii) b =→, w2 = w1 a1 και
• u1 = a2 u2 ή
• u1 = u2 = e και a2 = ⊔.
12
Υπολογισμός μηχανής Turing

Ορισμός
Έστω μηχανή Turing M. Με ⊢∗M συμβολίζουμε την ανακλαστική μεταβατική
κλειστότητα της ⊢M . Θα λέμε ότι η συνολική κατάσταση C1 παράγει τη
συνολική κατάσταση C2 στην M αν C1 ⊢∗M C2 . Υπολογισμός (μήκους n ή με n
βήματα) της M ονομάζεται κάθε ακολουθία C0 , C1 , . . . , Cn , για κάποιο n ≥ 0,
έτσι ώστε
C0 ⊢M C1 ⊢M · · · ⊢M Cn
(στην περίπτωση αυτή θα γράφουμε C0 ⊢nM Cn ).

Για παράδειγμα, ένας υπολογισμός της παραπάνω μηχανής που διέγραφε τα


σύμβολα a από την ταινία είναι ο εξής:
(q1 , ▷⊔aa) ⊢M (q0 , ▷⊔aa)
⊢M (q1 , ▷⊔⊔a)
⊢M (q0 , ▷⊔⊔a)
⊢M (q1 , ▷⊔⊔⊔)
⊢M (q0 , ▷⊔⊔⊔⊔)
13
⊢M (h, ▷⊔⊔⊔⊔)
Συμβολισμός για μηχανές Turing

Όπως είδαμε, η πλήρης περιγραφή μιας μηχανής Turing είναι αρκετά


πολύπλοκη ακόμα και με τη βοήθεια πίνακα για τη συνάρτηση μετάβασης.
Χρειαζόμαστε λοιπόν έναν πιο πρακτικό συμβολισμό. Ο συμβολισμός που θα
υιοθετήσουμε μοιάζει με αυτόν που χρησιμοποιήσαμε για τα αυτόματα με τη
διαφορά ότι οι κόμβοι μας αυτή τη φορά θα είναι κι αυτές μηχανές Turing.
Ουσιαστικά, δηλαδή, η περιγραφή μιας μηχανής Turing θα γίνεται
συνδυάζοντας απλούστερες ήδη ορισμένες μηχανές Turing.

14
Συνδυάζοντας μηχανές Turing

Ας δούμε πρώτα με ποιον τρόπο μπορούμε να συνδυάσουμε μηχανές Turing.


Έστω M1 = (K1 , Σ, δ1 , s1 , H1 ) και M2 = (K2 , Σ, δ2 , s2 , H2 ) δύο μηχανές Turing
και a ένα στοιχείο του Σ. Μπορούμε να υποθέσουμε ότι όλα τα στοιχεία τους
είναι διακριτά, για παράδειγμα θεωρούμε ότι τα σύνολα των καταστάσεων
K1 και K2 είναι ξένα μεταξύ τους.
Ορίζουμε μηχανή Turing M = (K1 ∪ K2 , Σ, δ, s1 , H2 ) όπου για κάθε σ ∈ Σ και
q ∈ K − H, 

δ1 (q, σ) αν q ∈ K1 − H1

δ(q, σ) = δ2 (q, σ) αν q ∈ K2 − H2



(s2 , σ) αν q ∈ H1 και σ = a

Η M ουσιαστικά λειτουργεί ως εξής: Ξεκινάει από την αρχική κατάσταση της


M1 , λειτουργεί όπως η M1 , και όταν φτάσει σε σημείο που η M1 θα τερμάτιζε,
τότε εφόσον η κεφαλή ανάγνωσης διαβάζει το a, μεταβαίνει στην αρχική
κατάσταση της M2 και συνεχίζει λειτουργώντας όπως θα λειτουργούσε η M2 .

15
Βασικές μηχανές Turing

Τώρα που είδαμε έναν απλό τρόπο με τον οποίο μπορούμε να συνδυάσουμε
μηχανές Turing, ας δούμε μερικές βασικές τέτοιες μηχανές.
Για κάθε a ∈ (Σ ∪ {←, →}) − {▷}, ορίζουμε τη μηχανή Turing
Ma = ({s, h}, Σ, δ, {h}) όπου για κάθε b ∈ Σ,

(h, a) αν b ̸= ▷
δ(s, b) =
(s, →) αλλιώς

Η μηχανή Ma συμβολίζεται απλά με a. Στην περίπτωση που a ∈ / {←, →}, η


λειτουργία της Ma είναι απλά να γράφει το στοιχείο a στην ταινία και αμέσως
μετά τερματίζει.
Η M→ συμβολίζεται με R και η λειτουργία της συνίσταται απλά στο να
μετακινεί προς τα δεξιά κατά μία θέση την κεφαλή ανάγνωσης. Ομοίως, η
M← μετακινεί προς τα αριστερά κατά μία θέση την κεφαλή ανάγνωσης και
συμβολίζεται με L.

16
Παραδείγματα συνδυασμού βασικών μηχανών

Με το παρακάτω διάγραμμα (στο οποίο συμβολίζουμε με > τη μηχανή που


δέχεται πρώτα την είσοδο) αναπαρίσταται η μηχανή Turing που λειτουργεί
ως εξής:

1. Μετακινεί την κεφαλή μία θέση δεξιά.


2. Αν το σύμβολο που διαβάζει στην τρέχουσα θέση της κεφαλής είναι
a, b, ▷ ή ⊔, τότε μετακινεί ακόμα μία φορά την κεφαλή μία θέση δεξιά.

Πολλές φορές είναι πιο πρακτικό να χρησιμοποιούμε ένα βέλος με πολλές


επιγραφές.

17
Παραδείγματα συνδυασμού βασικών μηχανών

Αν ένα βέλος έχει ως επιγραφή όλα τα σύμβολα του Σ, τότε θα παραλείπουμε


όλα τα σύμβολα και θα γράφουμε το βέλος χωρίς καμία επιγραφή.
Επίσης, αρκετές φορές θα παραλείπουμε το σύμβολο > στο διάγραμμα
συνδυασμού μηχανών Turing και θα θεωρούμε ότι η αριστερότερη μηχανή
είναι αυτή που δέχεται πρώτα την είσοδο.
Για παράδειγμα, η μηχανή που μετακινεί την κεφαλή δύο θέσεις δεξιά έχει
διάγραμμα
R → R.

Για απλότητα, μηχανές που ενώνονται με ένα βέλος χωρίς επιγραφή θα τις
συμβολίζουμε συνήθως παραθέτοντας τα σύμβολα τους. Για παράδειγμα, η
παραπάνω μηχανή θα συμβολίζεται και ως

RR ή R2 .

18
Παραδείγματα συνδυασμού βασικών μηχανών

Όταν σε ένα διάγραμμα μηχανής Turing, ένα βέλος έχει ως επιγραφή όλα τα
σύμβολα του Σ εκτός από κάποιο b, τότε θα γράφουμε ως επιγραφή b ή
a ̸= b. Για παράδειγμα, με τα παρακάτω διάγραμμα, αναπαρίσταται η μηχανή
που μετακινεί την κεφαλή δεξιά συνεχώς μέχρι να διαβάσει κάποιο μη κενό
σύμβολο.

Το δεύτερο διάγραμμα είναι ιδιαίτερο χρήσιμο στην περίπτωση που το a θα


χρησιμοποιηθεί στη συνέχεια. Για παράδειγμα, η μηχανή που περιγράφεται
ως

μετακινεί συνεχώς την κεφαλή δεξιά μέχρι να διαβάσει κάποιο μη κενό


σύμβολο a και μετά γράφει μία θέση αριστερότερα το σύμβολο αυτό.
19
Παραδείγματα συνδυασμού βασικών μηχανών

Με τα παρακάτω διαγράμματα, αναπαρίστανται οι μηχανές R⊔ , L⊔ , R⊔ , L⊔


που σαρώνουν την ταινία μέχρι να βρουν κάποιο συγκεκριμένο σύμβολο
(αντίστοιχα το πρώτο κενό σύμβολο στα δεξιά, το πρώτο κενό σύμβολο στα
αριστερά, το πρώτο μη κενό σύμβολο στα δεξιά, και το πρώτο μη κενό
σύμβολο στα αριστερά).

20
Παραδείγματα συνδυασμού βασικών μηχανών

Το διάγραμμα της μηχανής που διαγράφει όλα τα a δεξιά από το αρχικό


σημείο της κεφαλής αναπαρίσταται ως εξής:

Η μηχανή δεξιάς μετατόπισης S→ (ομοίως ορίζεται και η μηχανή αριστερής


μετατόπισης S← ) που μετασχηματίζει την ⊔w⊔ σε ⊔⊔w⊔ αναπαρίσταται ως
εξής:

21
Παραδείγματα συνδυασμού βασικών μηχανών

Η μηχανή αντιγραφής C που μετασχηματίζει την ⊔w⊔ σε ⊔w⊔w⊔


αναπαρίσταται ως εξής:

22
Υπολογισμοί με μηχανές Turing
Αναδρομικές γλώσσες

Ορισμός
Έστω M = (K, Σ, δ, s, H) μηχανή Turing, όπου H = {y, n}. Κάθε συνολική
κατάσταση τερματισμού της οποίας η κατάσταση τερματισμού είναι y θα
λέγεται συνολική κατάσταση αποδοχής, ενώ αν είναι n θα λέγεται
συνολική κατάσταση απόρριψης.
Λέμε ότι η M δέχεται μία είσοδο w ∈ (Σ − {⊔, ▷})∗ αν η (s, ▷⊔w) παράγει
μία συνολική κατάσταση αποδοχής, ενώ θα λέμε ότι την απορρίπτει αν
παράγει μία συνολική κατάσταση απόρριψης.
Έστω Σ0 ⊆ Σ − {⊔, ▷} ένα αλφάβητο εισόδου της M. Λέμε ότι η M
αποφασίζει μία γλώσσα L ⊆ Σ∗0 αν για κάθε w ∈ Σ∗0 ,

• αν w ∈ L, τότε η M δέχεται την w.


• αν w ∈
/ L, τότε η M απορρίπτει την w.

23
Παρατηρήσεις

• Ως αρχική συνολική κατάσταση κάθε μηχανής Turing M θεωρούμε την

(s, ▷⊔w),

όπου s είναι η αρχική κατάσταση της M και w είναι η είσοδος.


• Είναι σημαντικό να τονίσουμε ότι αν μία μηχανή Turing M αποφασίζει
κάποια γλώσσα L, τότε η M τερματίζει σε κάθε είσοδο w ανεξάρτητα από
το αν η w είναι ή δεν είναι στην L. Μία μηχανή Turing όμως δεν είναι
αναγκαίο να τερματίζει σε κάθε είσοδο. Αυτό διαφοροποιεί πολύ σε
σχέση ό,τι έχουμε δει μέχρι τώρα το πρόβλημα του χαρακτηρισμού των
γλωσσών που αποφασίζονται από μηχανές Turing.

24
Παράδειγμα

Όπως δείξαμε στις προηγούμενες ενότητες, η γλώσσα L = {ai bi ci : i ≥ 0} δεν


γίνεται δεκτή από κανένα υπολογιστικό μοντέλο που έχουμε ορίσει ως τώρα.
Θα δείξουμε τώρα ότι η L γίνεται δεκτή από μία μηχανή Turing.
Πρώτα, ορίζουμε δύο νέες βασικές μηχανές Turing. Οι μηχανές αυτές είναι οι
y και n οι οποίες απλά θέτουν ως νέα κατάσταση της μηχανής τις
καταστάσεις y και n αντίστοιχα.
Μία μηχανή που κάνει δεκτή την L είναι η εξής:

Η μηχανή αυτή αναζητά πρώτα κάποιο a. Αφού το βρει το αντικαθιστά με το


d, και μετά κάνει το ίδιο με το b και με το c. Με αυτό τον τρόπο μπορεί να
ελέγχει κάθε φορά αν η γραμματοσειρά είναι της μορφής ai bi ci .
25
Αναδρομικές συναρτήσεις

Αφού οι μηχανές Turing μπορούν να γράψουν στην ταινία, μπορούν να


παράξουν και πιο σύνθετες εξόδους από “y” και “n”.

Ορισμός
Έστω M = (K, Σ, δ, s, {h}) μηχανή Turing με αλφάβητο εισόδου
Σ0 ⊆ Σ − {⊔, ▷} και έστω w ∈ Σ∗0 . Η u ονομάζεται έξοδος της M με είσοδο
w (συμβολίζεται ως M(w)) αν η M τερματίζει με είσοδο w, και

(s, ▷⊔w) ⊢∗M (h, ▷⊔u).

Αν η M δεν τερματίζει με είσοδο w, θα γράφουμε M(w) =↗. Έστω f


συνάρτηση από το Σ∗0 στο Σ∗0 . Λέμε ότι η M υπολογίζει την f αν κάθε
w ∈ Σ∗0 ,
M(w) = f(w).
Μία συνάρτηση f : Σ∗0 → Σ∗0 λέγεται αναδρομική όταν υπάρχει μηχανή
Turing που την υπολογίζει.

26
Παρατηρήσεις

• Η συμβολοσειρά M(w) ορίζεται μόνο όταν η M τερματίζει με είσοδο w.


Αυτό όπως έχουμε τονίσει δεν είναι δεδομένο πάντα.
• Για να υπολογίζει μία μηχανή Turing M κάποια συνάρτηση f, θα πρέπει
καταρχάς το πεδίο ορισμού της f να είναι ίδιο με το αλφάβητο εισόδου
της M, και επιπλέον για κάθε είσοδο w στο αλφάβητο αυτό, η M να
τερματίζει, και η M(w) να είναι ίση με f(w).
• Η κεφαλή ανάγνωσης θα πρέπει να επιστρέφει πάντα στη θέση ▷⊔u στο
τέλος κάθε υπολογισμού συνάρτησης.

27
Παράδειγμα

Έστω συνάρτηση κ : Σ∗ → Σ∗ που ορίζεται έτσι ώστε για κάθε w ∈ Σ∗ ,

κ(w) = ww.

Η κ υπολογίζεται από τη μηχανή

CS← L⊔ .

Η μηχανή αυτή αρχικά μετασχηματίζει την ▷⊔w σε ▷⊔w⊔w⊔ και μετά


μετατοπίζει τη δεξιότερη εμφάνιση της w κατά μία θέση στα αριστερά και
επιστρέφει την κεφαλή στη σωστή θέση.

28
Αναπαράσταση αριθμών

Κάθε φυσικός αριθμός x μπορεί να γραφτεί σε δυαδική μορφή ως

x = a1 2n−1 + a2 2n−2 + . . . + an ,

για κάποιους a1 , . . . , an ∈ N.
Επομένως, μπορεί να αναπαρασταθεί σε δυαδική μορφή από μία
συμβολοσειρά w = a1 a2 . . . an ∈ {0, 1}∗ . Ορίζουμε num(w) να είναι ο
φυσικός αριθμός που αναπαριστά μία συμβολοσειρά w ∈ {0, 1}∗ .
Κάθε φυσικός αριθμός μπορεί να αναπαρασταθεί με μοναδικό τρόπο από
μία συμβολοσειρά στο 0 ∪ 1(0 ∪ 1)∗ .
Στην περίπτωση που θέλουμε να τροφοδοτήσουμε μία μηχανή Turing με n
φυσικούς αριθμούς, θα χρησιμοποιούμε το σύμβολο «;» ως διαχωριστικό.

29
Υπολογισμοί με αριθμούς

Ορισμός
Έστω M = (K, Σ, δ, s, {h}) μηχανή Turing τέτοια ώστε 0, 1, ; ∈ Σ και έστω
έστω f συνάρτηση από το Nk στο N, για κάποιο k > 0. Λέμε ότι η M
υπολογίζει την f αν για όλα τα w1 , . . . , wk ∈ 0 ∪ 1{0, 1}∗ ,

num(M(w1 ; . . . ; wk )) = f(num(w1 ), . . . , num(wk )).

Μία συνάρτηση f : Nk → N λέγεται αναδρομική όταν υπάρχει μηχανή


Turing που την υπολογίζει.

30
Παράδειγμα

Η συνάρτηση succ(n) = n + 1 υπολογίζεται από την εξής μηχανή Turing:

31
Αναδρομικά απαριθμήσιμες γλώσσες

Ορισμός
Έστω M = (K, Σ, δ, s, H) μηχανή Turing με αλφάβητο εισόδου
Σ0 ⊆ Σ − {⊔, ▷} και έστω γλώσσα L ⊆ Σ∗0 . Λέμε ότι η M ημιαποφασίζει την
L αν για κάθε w ∈ Σ∗0 ισχύει

w ∈ L ⇔ η M τερματίζει με είσοδο w.

Μία γλώσσα L είναι αναδρομικά απαριθμήσιμη αν ημιαποφασίζεται από


κάποια μηχανή Turing.

Παρατήρηση
Προσοχή στη διαφορά μεταξύ αποφασισιμότητας και
ημιαποφασισιμότητας.

32
Παράδειγμα

Η γλώσσα
{w ∈ {a, b}∗ : η w περιέχει τουλάχιστον ένα a}
αναπαρίσταται από την εξής μηχανή Turing:

Αν η είσοδος δεν περιέχει κανένα σύμβολο a, τότε η μηχανή αυτή κινεί την
κεφαλή της συνεχώς στα δεξιά χωρίς να τερματίζει ποτέ. Αν αντίθετα η
είσοδος περιέχει τουλάχιστον ένα a, τότε μόλις η κεφαλή της μηχανής αυτής
βρεθεί στην πρώτη τέτοια θέση σταματάει.

33
Απλές ιδιότητες αναδρομικών γλωσσών

Θεώρημα
Κάθε αναδρομική γλώσσα είναι αναδρομικά απαριθμήσιμη.

Απόδειξη. Έστω αναδρομική γλώσσα L. Υπάρχει μηχανή Turing


M = (K, Σ, δ, s, {y, n}) που αποφασίζει την L. Ορίζουμε M′ = (K, Σ, δ ′ , s, {y}),
όπου για κάθε q ∈ K και a ∈ Σ,

δ(q, a) αν q ̸= n

δ (q, a) =
(n, a) αλλιώς

Η M′ τερματίζει για κάθε είσοδο w ∈ L, αλλά εισέρχεται σε ατέρμονα βρόχο


όταν φτάνει σε κατάσταση n, δηλαδή όταν w ∈ / L. Επομένως, η M′
ημιαποφασίζει την L.

34
Απλές ιδιότητες αναδρομικών γλωσσών

Θεώρημα
Το συμπλήρωμα L κάθε αναδρομικής γλώσσας L είναι αναδρομική γλώσσα.

Απόδειξη. Έστω αναδρομική γλώσσα L. Υπάρχει μηχανή Turing


M = (K, Σ, δ, s, {y, n}) που αποφασίζει την L. Ορίζουμε M′ = (K, Σ, δ ′ , s, {y}),
όπου για κάθε q ∈ K και a ∈ Σ,


δ(q, a) αν q ∈
 / {y, n}

δ (q, a) = (n, a) αν q = y



(y, a) αν q = n

Στην M′ ουσιαστικά έχουμε αντιστρέψει τους ρόλους των τελικών


καταστάσεων y και n, δηλαδή έχουμε M′ (w) = y αν και μόνο αν M(w) = n.
Άρα, η M′ αποφασίζει την L, και επομένως η L είναι αναδρομική.

35
Επεκτάσεις μηχανών Turing
Επεκτείνοντας τη μηχανή Turing

Όπως έχουμε ήδη αναφέρει, η μηχανή Turing αποτελεί ένα υπολογιστικό


μοντέλο που περιγράφει πλήρως την έννοια του αλγορίθμου και του
υπολογισμού.
Για να μπορέσουμε να επιχειρηματολογήσουμε υπέρ αυτής της θέσης, θα
δείξουμε ότι επεκτείνοντας (με ρεαλιστικούς τρόπους) τη μηχανή Turing δεν
αυξάνουμε τις υπολογιστικές της δυνατότητες.
Υπάρχουν αρκετοί τρόποι να επεκτείνουμε μία μηχανή Turing:

• Προσθέτουμε ταινίες.
• Προσθέτουμε κεφαλές.
• Επιτρέπουμε η ταινία να εκτείνεται επ’ άπειρον και προς τις δύο
κατευθύνσεις.
• Επιτρέπουμε η ταινία να έχει δύο διαστάσεις.

36
Πολλαπλές ταινίες

Ορισμός
Έστω k > 0. Μία μηχανή Turing k ταινιών M είναι μία πεντάδα (K, Σ, δ, s, H),
όπου τα K, Σ, s, H ορίζονται όπως στην απλή μηχανή Turing, και

δ : (K − H) × Σk → K × (Σ ∪ {←, →})k .

Η δ(q, (a1 , . . . , ak )) = (p, (b1 , . . . , bk )) δηλώνει την ενέργεια που εκτελεί το


M σε κάθε ταινία σύμφωνα με τους ορισμούς και τις συνθήκες που έχουμε
ήδη δώσει στην απλή μηχανή Turing. Κάθε μηχανή Turing με μία ταινία θα
καλείται πρότυπη μηχανή Turing.

37
Υπολογισμοί με μηχανές πολλαπλών ταινιών

Ορισμός
Έστω M = (K, Σ, δ, s, H) μία μηχανή Turing k ταινιών. Συνολική κατάσταση
της M ονομάζεται κάθε στοιχείο του

K × (▷Σ∗ × (Σ∗ (Σ − {⊔}) ∪ {e}))k ,

δηλαδή μία συνολική κατάσταση προσδιορίζει σε κάθε χρονική στιγμή την


κατάσταση, τα περιεχόμενα των k ταινιών και τις θέσεις των κεφαλών της
M. Επεκτείνουμε τον συμβολισμό συνολικών καταστάσεων για τις απλές
μηχανές Turing στις μηχανές Turing με k ταινίες, γράφουμε δηλαδή μία
συνολική κατάσταση ως (q, w1 a1 u1 , . . . , wk ak uk ). Η έννοια της παραγωγής
σε ένα βήμα ορίζεται εντελώς ανάλογα. Μία μηχανή Turing αποφασίζει (ή
ημιαποφασίζει) μία γλώσσα ή υπολογίζει μία συνάρτηση αν μπορεί να
μεταβεί σε μία κατάσταση τερματισμού ξεκινώντας από την αρχική
κατάσταση
(s, ▷⊔w, s, ▷⊔, . . . , ▷⊔).
Ως έξοδος της M νοείται η έξοδος στην πρώτη ταινία.

38
Αναπαράσταση μηχανών Turing με k ταινίες

Μία μηχανή Turing με k ταινίες μπορεί να αναπαρασταθεί περίπου όπως και


μία απλή μηχανή Turing. Η μόνη διαφορά είναι ότι σημειώνουμε με έναν άνω
δείκτη την ταινία στην οποία πραγματοποιείται η ενέργεια της απλής
μηχανής που χρησιμοποιούμε.
Για παράδειγμα, αν a ∈ Σ − {←, →}, τότε η μηχανή a2 γράφει το σύμβολο a
στη δεύτερη ταινία. Ομοίως, η L1⊔ αναζητά προς τα αριστερά στην πρώτη
ταινία ένα κενό. Αν μία ενέργεια πραγματοποιείται ταυτόχρονα σε πολλές
ταινίες, τότε σημειώνουμε όλους τους δείκτες χωρισμένους με κόμμα, για
παράδειγμα η R1,2 μετακινεί στα δεξιά την κεφαλή και στην πρώτη ταινία και
στη δεύτερη.
Για να μην μπερδεύουμε τους δείκτες, στις αναπαραστάσεις μηχανών Turing
με k ταινίες, αποφεύγουμε τις συντομογραφίες M2 , M3 , . . . και γράφουμε
απλά MM, MMM, . . . αντίστοιχα.

39
Παράδειγμα

Η μηχανή Turing C που αντιγράφει μία είσοδο μπορεί να υλοποιηθεί πολύ


πιο απλά χρησιμοποιώντας δύο ταινίες ως εξής:

Τα στάδια λειτουργίας της μηχανής αυτής (με είσοδο w = au) είναι τα εξής:

Πρώτη ταινία Δεύτερη ταινία


Στην αρχή ▷⊔w ▷⊔
Μετά το (1) ▷⊔w⊔ ▷⊔w⊔
Μετά το (2) ▷⊔w⊔⊔ ▷⊔au
Μετά το (3) ▷⊔w⊔w⊔ ▷⊔w⊔

40
Παράδειγμα

Μία μηχανή Turing δύο ταινιών που προσθέτει δύο αριθμούς σε δυαδική
μορφή είναι η εξής (όπου τα 00, 01, 10, 11 είναι συντομογραφίες για τα
περιεχόμενα στην κεφαλή της πρώτης και της δεύτερης ταινίας):

Η μηχανή αυτή μεταφέρει πρώτα τον πρώτο αριθμό στη δεύτερη ταινία και
μετά εκτελεί την πρόσθεση με τον συνηθισμένο τρόπο προσθέτοντας τα
41
αντίστοιχα ψηφία των δύο αριθμών.
Ισοδυναμία μηχανής Turing k ταινιών με πρότυπη μηχανή Turing

Όπως είδαμε, συνήθως οι πολλαπλές ταινίες διευκολύνουν πολύ τους


υπολογισμούς μία μηχανής Turing. Είναι όμως οι μηχανές Turing k ταινιών
πιο ισχυρές υπολογιστικά από τις πρότυπες μηχανές Turing; Η απάντηση
είναι αρνητική και δίνεται από το επόμενο θεώρημα.

Θεώρημα
Έστω M = (K, Σ, δ, s, H) μηχανή Turing k ταινιών για κάποιο k > 0. Υπάρχει
πρότυπη μηχανή Turing M′ = (K′ , Σ′ , δ ′ , s′ , H), όπου Σ ⊆ Σ′ , τέτοια ώστε
για κάθε x ∈ Σ∗ , η M με είσοδο x τερματίζει με έξοδο u στην πρώτη ταινία
αν και μόνο αν η M′ με είσοδο x τερματίζει στην ίδια κατάσταση
τερματισμού και με την ίδια έξοδο u στην ταινία της. Επιπλέον, αν η M
τερματίζει με είσοδο x μετά από t βήματα, τότε η M′ τερματίζει με είσοδο x
μετά από πλήθος βημάτων το οποίο είναι O(t(|x| + t)).

42
Απόδειξη

Απόδειξη. Η βασική ιδέα της απόδειξης είναι το ότι μία ταινία αρκεί για να
προσομοιωθούν k ταινίες. Η πρότυπη μηχανή M′ αντί για τα σύμβολα του Σ
θα δουλεύει με σύμβολα του Σ′ = Σ ∪ (Σ × {0, 1})k . Κατά τη λειτουργία της
η M′ σε κάθε θέση της ταινίας της θα έχει μία 2k-άδα στοιχείων
(a1 , b1 , . . . , ak , bk ) η οποία θα κωδικοποιεί τα σύμβολα a1 , a2 , . . . , ak που
υπάρχουν στις k ταινίες της M στην αντίστοιχη θέση, καθώς επίσης και το αν
βρίσκεται σε αυτή τη θέση η κεφαλή της M (ανάλογα με το αν κάθε
b1 , b2 , . . . , bk είναι 0 ή 1).

43
Απόδειξη

Απόδειξη (συν.). Η M′ λειτουργεί σε τρεις φάσεις:

1. Η M′ ξεκινάει στην κατάσταση που θα ξεκινούσε η M με είσοδο x. Στην


πρώτη φάση, η M′ μετατρέπει ουσιαστικά την είσοδο x σε μία
κωδικοποιημένη είσοδο που περιέχει τα νέα σύμβολα του (Σ × {0, 1})k
ως εξής: Μετακινεί την είσοδο x μία θέση προς τα δεξιά, επιστρέφει
στην αμέσως επόμενη θέση από το ▷ και γράφει (▷, 0, ▷, 0, . . . , ▷, 0) το
οποίο κωδικοποιεί το νέο αριστερό άκρο της M′ . Μετά, πηγαίνει στην
αμέσως δεξιά θέση και γράφει (⊔, 1, ⊔, 1, . . . , ⊔, 1). Προχωράει πάλι
δεξιά και για κάθε σύμβολο a ̸= ⊔ γράφει στην ταινία
(a, 0, ⊔, 0, . . . , ⊔, 0) και προχωράει δεξιά. Όταν φτάσει στο σύμβολο ⊔
σταματάει αυτή η φάση.

44
Απόδειξη

Απόδειξη (συν.).

2. Η M′ προσομοιώνει τη λειτουργία της M διατρέχοντας πρώτα μία φορά


(αριστερά και δεξιά) για να μεταβεί στην κατάσταση που κωδικοποιεί
την k-άδα των συμβόλων στις θέσεις των k κεφαλών, και μετά
διατρέχοντας μία ακόμα φορά (αριστερά και δεξιά) για να ενημερώσει
τις εγγραφές σύμφωνα με την κίνηση της M.
3. Η M′ μετατρέπει τα κωδικοποιημένα περιεχόμενα της ταινίας σε
σύμβολα του Σ ώστε να παράξει την έξοδο.

45
Απόδειξη

Απόδειξη (συν.). Τα βήματα που χρειάζονται για να ολοκληρωθούν η πρώτη


και η τρίτη φάση της M′ είναι O(|x|). Στη δεύτερη φάση, η M′ απαιτείται να
διατρέξει κάθε φορά δύο φορές τα περιεχόμενα της ταινίας, και αυτό πρέπει
να γίνει t φορές (τόσες χρειάζονται μέχρι να τερματίσει η M). Κάθε φορά, το
τμήμα αυτό της ταινίας αυξάνεται σε μήκος κατά 1 το πολύ (ξεκινάει από
|x| + 2), επομένως συνολικά η δεύτερη φάση απαιτεί το O(t(|x| + t))
βήματα.

Πόρισμα
Οποιαδήποτε συνάρτηση υπολογίζεται, ή οποιαδήποτε γλώσσα
αποφασίζεται ή ημιαποφασίζεται από μία μηχανή Turing k ταινιών,
υπολογίζεται επίσης, αποφασίζεται ή ημιαποφασίζεται, αντίστοιχα, από μία
πρότυπη μηχανή Turing.

46
Άλλες επεκτάσεις μηχανών Turing

Άπειρη ταινία δύο κατευθύνσεων. Μία τέτοια μηχανή Turing μπορεί να


προσομοιωθεί από μία μηχανή Turing με δύο ταινίες ως εξής: Η μία ταινία
περιέχει το τμήμα της ταινίας δύο κατευθύνσεων που βρίσκεται δεξιά της
κεφαλής και η άλλη το τμήμα που βρίσκεται αριστερά της (αντεστραμμένο).
Η προσομοίωση χρειάζεται γραμμικό χρόνο.
Πολλαπλές κεφαλές. Κάθε μηχανή Turing με πολλαπλές κεφαλές μπορεί να
προσομοιωθεί από μία πρότυπη μηχανή Turing περίπου όπως και στις
μηχανές με k ταινίες: κάθε νέο σύμβολο κωδικοποιεί το σύμβολο αλλά και το
αν μία συγκεκριμένη κεφαλή βρίσκεται ή όχι σε αυτή τη θέση. Η
προσομοίωση χρειάζεται τετραγωνικό χρόνο.
Ταινία δύο διαστάσεων. Μία μηχανή με ταινία δύο διαστάσεων κάθε χρονική
στιγμή έχει μόνο πεπερασμένου πλήθους μη κενά σύμβολα στην ταινία,
επομένως μπορεί να προσομοιωθεί από μία πρότυπη μηχανή Turing ως εξής:
το μη κενό μέρος της ταινίας δύο διαστάσεων μπορεί να κωδικοποιηθεί ως
μία πεπερασμένη ακολουθία από συμβολοσειρές χωρισμένες από κάποιο
ειδικό σύμβολο. Η προσομοίωση χρειάζεται πολυωνυμικό χρόνο.

47
Παραλλαγές μηχανών Turing

Οι απλές επεκτάσεις μηχανών Turing που είδαμε δεν προσθέτουν τίποτα


στην υπολογιστική ισχύ μίας μηχανής Turing (αν και πολλές φορές
διευκολύνουν πολύ τη διαδικασία υπολογισμού).

Θεώρημα
Οποιαδήποτε γλώσσα αποφασίζεται ή ημιαποφασίζεται, και οποιαδήποτε
συνάρτηση υπολογίζεται από μηχανές Turing με πολλές ταινίες, κεφαλές,
άπειρες ταινίες δύο κατευθύνσεων ή πολυδιάστατες ταινίες, μπορεί να
αποφασιστεί, ημιαποφασιστεί ή υπολογιστεί, αντίστοιχα από μία πρότυπη
μηχανή Turing.

Παρατήρηση
Πέρα από το να επεκτείνουμε μία μηχανή Turing, μπορούμε και να
περιορίσουμε μερικώς κάποια στοιχεία της χωρίς να πλήξουμε την
υπολογιστική της ισχύ. Για παράδειγμα, είναι εύκολο να δειχθεί ότι μία
μηχανή Turing της οποίας το αλφάβητο έχει μόνο δύο σύμβολα (π.χ. 0 και
1) μπορεί να προσομοιώσει κάθε πρότυπη μηχανή Turing.

48
Μηχανές Turing τυχαίας προσπέλασης
Μηχανές Turing τυχαίας προσπέλασης

Θα μελετήσουμε τώρα μία παραλλαγή της μηχανής Turing που


προσομοιώνει τη λειτουργία ενός σύγχρονου υπολογιστή. Αφού το κάνουμε
αυτό, θα δείξουμε ότι ακόμα και αυτή η παραλλαγή δεν έχει περισσότερες
υπολογιστικές δυνατότητες από την πρότυπη μηχανή Turing.
Ένας βασικός περιορισμός των μηχανών Turing που είδαμε ως τώρα είναι το
ότι η μνήμη τους είναι σειριακή, δηλαδή για να προσπελάσουν μία
συγκεκριμένη θέση της ταινίας θα πρέπει η κεφαλή ανάγνωσης να περάσει
από όλες τις θέσεις μεταξύ της τρέχουσας και της επιθυμητής.
Τι θα άλλαζε αν η μηχανή Turing διέθετε μνήμη τυχαίας προσπέλασης; Αν
δηλαδή μπορούμε να μετακινήσει την κεφαλή ανάγνωσης σε οποιαδήποτε
θέση της ταινίας σε ένα μόνο βήμα;

49
Περιγραφή μηχανής Turing τυχαίας προσπέλασης

Μία μηχανή Turing τυχαίας προσπέλασης διαθέτει:

• Μία άπειρη ταινία μίας κατεύθυνσης T η οποία περιέχει θετικούς


φυσικούς αριθμούς.
• Έναν προκαθορισμένο αριθμό καταχωρητών R0 , R1 , . . . , Rk στον
καθέναν από τους οποίους μπορεί να αποθηκευθεί οποιοσδήποτε
φυσικός αριθμός. Ο καταχωρητής R0 ονομάζεται και συσσωρευτής μιας
και σε αυτόν γίνονται όλοι αριθμητικοί και λογικοί υπολογισμοί.
• Ένα μετρητή προγράμματος κ ο οποίος προσδιορίζει την επόμενη
εντολή που θα εκτελεστεί.

50
Εντολές προγράμματος

Η λειτουργία μίας μηχανής Turing τυχαίας προσπέλασης προσδιορίζεται από


ένα πρόγραμμα Π (και όχι πλέον από μία συνάρτηση μετάβασης), δηλαδή
από μία ακολουθία από τις εξής εντολές:

Εντολή Τελεστής Σημασιολογία


read j R0 := T[Rj ]
write j T[Rj ] := R0
store j Rj := R0
load j R0 := Rj
load =c R0 := c
add j R0 := R0 + Rj
add =c R0 := R0 + c
sub j R0 := max{R0 − Rj , 0}
sub =c R0 := max{R0 − c, 0}
R
half R0 := ⌊ 2j ⌋
jump s κ := s
jpos s if R0 > 0 then κ := s
jzero s if R0 = 0 then κ := s
halt κ := 0 51
Ορισμός μηχανής Turing τυχαίας προσπέλασης

Ορισμός
Μία μηχανή Turing τυχαίας προσπέλασης είναι ένα ζεύγος M = (k, Π), όπου
k > 0 είναι το πλήθος των καταχωρητών, και Π = (π1 , π2 , . . . , πp ) το
πρόγραμμα είναι μία πεπερασμένη ακολουθία εντολών τέτοια ώστε η πp
να είναι πάντα η εντολή halt.
Συνολική κατάσταση της M είναι κάθε k + 2-άδα (κ, R0 , R1 , . . . , Rk−1 , T),
όπου

• κ ∈ N είναι ο μετρητής του προγράμματος για τον οποίο ισχύει πάντα


0 ≤ κ ≤ p.
• Για κάθε j ∈ {0, . . . , k − 1}, Rj ∈ N είναι η τρέχουσα τιμή του
καταχωρητή j.
• Το T, τα περιεχόμενα της ταινίας, είναι ένα πεπερασμένο υποσύνολο του
(N − {0}) × (N − {0}) τέτοιο ώστε για κάθε i > 0 να υπάρχει το πολύ
ένα ζεύγος της μορφής (i, m) ∈ T.

Αν κ = 0, τότε η συνολική κατάσταση ονομάζεται τερματισμένη συνολική


κατάσταση.
52
Υπολογισμός μηχανής Turing τυχαίας προσπέλασης

Ορισμός
Έστω M = (k, Π) μηχανή τυχαίας προσπέλασης. Λέμε ότι η συνολική
κατάσταση C = (κ, R0 , R1 , . . . , Rk−1 , T) της M παράγει σε ένα βήμα τη
συνολική κατάσταση C′ = (κ′ , R′0 , R′1 , . . . , R′k−1 , T′ ) αν οι τιμές των
κ′ , R′0 , R′1 , . . . , R′k−1 , T′ προκύπτουν από την εφαρμογή της τρέχουσας
εντολής πκ στα κ, Rj , T. Για παράδειγμα,

• Αν η πκ είναι της μορφής add = c, όπου c ≥ 0 είναι μία σταθερά, τότε


έχουμε R′0 = R0 + c και κ′ = κ + 1, ενώ όλες οι υπόλοιπες τιμές
παραμένουν αμετάβλητες.
• Αν η πκ είναι της μορφής write j, όπου j < k, τότε έχουμε
T′ = (T − {(Rj , m) : (Rj , m) ∈ T για κάποιο m > 0}) ∪ {(Rj , R0 )} και
κ′ = κ + 1, ενώ όλες οι υπόλοιπες τιμές παραμένουν αμετάβλητες.
• Αν η πκ είναι της μορφής jpos s, όπου 1 ≤ s < p, τότε έχουμε κ′ = s αν
R0 > 0 και κ′ = κ + 1 διαφορετικά, ενώ όλες οι υπόλοιπες τιμές
παραμένουν αμετάβλητες.

53
Κωδικοποίηση αλφαβήτου με φυσικούς αριθμούς

Η ταινία αλλά και οι καταχωρητές μίας μηχανής Turing τυχαίας προσπέλασης


όπως τα ορίσαμε περιέχουν μόνο φυσικούς αριθμούς.
Με τη βοήθεια φυσικών αριθμών μπορούμε να κωδικοποιήσουμε
οποιοδήποτε αριθμήσιμο αλφάβητο Σ (όπου ⊔ ∈ Σ και ▷ ∈
/ Σ αφού το
σύμβολο αυτό δεν μας χρειάζεται πλέον).
Κωδικοποίηση του αλφαβήτου Σ συνιστά κάθε 1-1 και επί συνάρτηση

E : Σ → {0, 1, . . . , |Σ| − 1}

Για πρακτικούς λόγους, θα θεωρούμε πάντα ότι E(⊔) = 0.

54
Υπολογισμός μηχανής Turing τυχαίας προσπέλασης

Ορισμός
Έστω M = (k, Π) μηχανή τυχαίας προσπέλασης. Θεωρούμε ότι αρχική
συνολική κατάσταση της M με είσοδο w = a1 a2 . . . an ∈ (Σ − {⊔})∗ είναι η
(κ, R0 , . . . , Rk−1 , T), όπου κ = 1, R0 = · · · = Rk−1 = 0, και
T = {(1, E(a1 )), (2, E(a2 )), . . . , (n, E(an ))}.
Λέμε ότι η M δέχεται την x ∈ (Σ − {⊔})∗ αν η αρχική συνολική κατάσταση
με είσοδο x παράγει μία τερματισμένη συνολική κατάσταση με R0 = 1, ενώ
λέμε ότι απορρίπτει την x αν παράγει μία τερματισμένη συνολική
κατάσταση με R0 = 0.

55
Υπολογισμός μηχανής Turing τυχαίας προσπέλασης

Ορισμός (συν.)
Έστω Σ0 ⊆ Σ − {⊔} αλφάβητο και έστω L ⊆ Σ∗0 γλώσσα. Λέμε ότι η M
αποφασίζει την L αν για κάθε x ∈ L, η M δέχεται την x, και για κάθε x ∈
/ L, η
M απορρίπτει την x. Λέμε ότι η M ημιαποφασίζει την L αν ισχύει το εξής:

x ∈ L αν και μόνο αν η M με είσοδο x παράγει κάποια τερματισμένη


συνολική κατάσταση.

Έστω f : Σ∗0 → Σ∗0 . Λέμε ότι η M υπολογίζει την f αν για κάθε x ∈ Σ∗0 , η
αρχική συνολική κατάσταση με είσοδο x παράγει μία τερματισμένη
συνολική κατάσταση με τα εξής περιεχόμενα στην ταινία:

{(1, E(a1 )), (2, E(a2 )), . . . , (n, E(an ))},

όπου f(x) = a1 a2 . . . an .

56
Παράδειγμα

Το πρόγραμμα Π μίας μηχανή Turing τυχαίας προσπέλασης M = (5, Π) που


υπολογίζει το γινόμενο δύο αριθμών x και y είναι το εξής (για απλότητα
υποθέτουμε ότι R0 := x, R1 := y, και το αποτέλεσμα αποθηκεύεται στο R0 ):

1. store 2 7. sub 3 13. load 2 19. jump 2


2. load 1 8. sub 3 14. add 2 20. load 4
3. jzero 19 9. jzero 13 15. store 2 21. halt
4. half 10. load 4 16. load 3
5. store 3 11. add 2 17. store 1
6. load 1 12. store 4 18. load 4

57
Παράδειγμα

Ένα υπολογισμός της M για R0 := 5 και R1 := 3 είναι ο εξής:


(1, 5, 3, 0, 0, 0, ∅) ⊢M (2, 5, 3, 5, 0, 0, ∅) (store 2)
⊢M (3, 3, 3, 5, 0, 0, ∅) (load 1)
⊢M (4, 3, 3, 5, 0, 0, ∅) (jzero 19)
⊢M (5, 1, 3, 5, 0, 0, ∅) (half)
⊢M (6, 1, 3, 5, 1, 0, ∅) (store 3)
⊢M (7, 3, 3, 5, 1, 0, ∅) (load 1)
⊢M (8, 2, 3, 5, 1, 0, ∅) (sub 3)
⊢M (9, 1, 3, 5, 1, 0, ∅) (sub 3)
⊢M (10, 1, 3, 5, 1, 0, ∅) (jzero 13)
⊢M (11, 0, 3, 5, 1, 0, ∅) (load 4)
⊢M (12, 5, 3, 5, 1, 0, ∅) (add 2)
..
.
⊢M (20, 15, 0, 20, 0, 15, ∅) (halt)
58
Απλοποίηση συμβολισμού

Είναι αρκετά δύσκολο να περιγραφεί η λειτουργία της M από το πρόγραμμα


Π. Για τον λόγο αυτό υιοθετούμε έναν πιο πρακτικό συμβολισμό. Για
παράδειγμα, το πρόγραμμα
1. load 1
2. add 2
3. sub = 1
4. store 1
μπορεί απλά να γραφεί ως “R1 := R2 + R1 − 1” ή ακόμα πιο απλά ως
“x := y + x − 1” αν συμβολίσουμε με x, y τα R1 , R2 . Επίσης, το πρόγραμμα
1. load 1
2. jzero 6
3. sub = 3
4. store 1
5. jump 1
μπορεί να γραφεί ως “while x > 0 do x := x − 3”, όπου με x συμβολίζουμε το
R1 .
59
Παράδειγμα

Υιοθετώντας τον απλοποιημένο συμβολισμό, το πρόγραμμα Π του


προηγούμενου παραδείγματος μπορεί να γραφεί ως
w := 0
while y > 0 do
begin
z := half(y)
if y − z − z ̸= 0 then w := w + x
x := x + x
y := z
end
halt
Η βασική ιδέα πίσω από τον αλγόριθμο αυτό είναι ότι μπορείς να
υπολογίσεις το x · y διπλασιάζοντας συνεχώς το x και υποδιπλασιάζοντας το y
(ελέγχοντας βέβαια πάντα το αν ο υποδιπλασιασμός του y παράγει περιττό ή
ζυγό). Αν y ζυγός, τότε 2y = ⌊ 2y ⌋, οπότε x · y = 2x · ⌊ 2y ⌋. Για παράδειγμα, αν
x := 5 και y := 8, τότε x · y = 5 · 8 = 10 · 4 = 20 · 2 = 40 · 1. Αν το y είναι
περιττός, τότε παρατηρούμε ότι x · y = 2x · ⌊ 2y ⌋ + x.
60
Παράδειγμα

Το πρόγραμμα Π μίας μηχανή Turing τυχαίας προσπέλασης που αποφασίζει


τη γλώσσα {an bn cn : n ≥ 0} είναι το εξής:
acount := bcount := ccount := 0, n := 1
while T[n] = 1 do: n := n + 1, acount := acount + 1
while T[n] = 2 do: n := n + 1, bcount := bcount + 1
while T[n] = 3 do: n := n + 1, ccount := ccount + 1
if acount = bcount = ccount and T[n] = 0 then accept else reject

Στο παραπάνω πρόγραμμα έχουμε θεωρήσει ότι E(a) = 1, E(b) = 2,


E(c) = 3 και ότι accept είναι συντομογραφία του “load = 1, halt” και reject
του “load = 0, halt”.

61
Προσομοίωσης πρότυπης μηχανής Turing

Κάθε πρότυπη μηχανή Turing μπορεί να προσομοιωθεί από μία μηχανή


Turing τυχαίας προσπέλασης.

Θεώρημα
Οποιαδήποτε αναδρομική ή αναδρομική απαριθμήσιμη γλώσσα και
οποιαδήποτε αναδρομική συνάρτηση, μπορεί να αποφασιστεί,
ημιαποφασιστεί και υπολογιστεί, αντίστοιχα, από μία μηχανή Turing
τυχαίας προσπέλασης.

Απόδειξη. Έστω πρότυπη μηχανή Turing M = (K, Σ, δ, s, H). Η M μπορεί να


προσομοιωθεί από μία μηχανή Turing τυχαίας προσπέλασης M′ = (1, Π),
όπου το πρόγραμμα Π περιέχει για κάθε κατάσταση q ∈ K μία ακολουθία
εντολών η οποία μιμείται την συνάρτηση μετάβασης δ.

62
Προσομοίωσης πρότυπης μηχανής Turing

Απόδειξη (συν.). Για παράδειγμα, αν Σ = {⊔, a, b}, E(a) = 1, E(b) = 2 και


q ∈ K έτσι ώστε

δ(q, ⊔) = (p, →)
δ(q, a) = (p, ←)
δ(q, b) = (r, ⊔)
δ(q, ▷) = (s, →)

τότε η ακολουθία εντολών της Π που προσομοιώνει τη λειτουργία της M


όταν βρίσκεται σε κατάσταση q είναι η εξής:
q: if T[n] = 0 then n := n + 1, goto p
if T[n] = 1 then if n > 0 then n := n − 1, goto p else goto s
if T[n] = 2 then T[n] := 0, goto r

63
Προσομοίωση μηχανής Turing τυχαίας προσπέλασης

Θα δείξουμε τώρα ότι ούτε αυτή η παραλλαγή της πρότυπης μηχανής Turing
έχει μεγαλύτερη υπολογιστική ισχύ.

Θεώρημα
Κάθε γλώσσα που αποφασίζεται ή ημιαποφασίζεται από μία μηχανή Turing
τυχαίας προσπέλασης, και κάθε συνάρτηση που υπολογίζεται από μία
μηχανή Turing τυχαίας προσπέλασης, μπορεί να αποφασιστεί,
ημιαποφασιστεί και υπολογιστεί, αντίστοιχα, από μία πρότυπη μηχανή
Turing. Επιπλέον, αν οι μηχανές τερματίζουν με κάποια είσοδο, τότε το
πλήθος των βημάτων που πραγματοποιεί η πρότυπη μηχανή Turign
φράσσεται από ένα πολυώνυμο ως προς το πλήθος των βημάτων της
μηχανής Turing τυχαίας προσπέλασης με την ίδια είσοδο.

64
Προσομοίωση μηχανής Turing τυχαίας προσπέλασης

Απόδειξη. Έστω M = (k, Π) μία μηχανή Turing τυχαίας προσπέλασης. Θα


περιγράψουμε μία μηχανή Turing πολλαπλών ταινιών M′ που προσομοιώνει
την M. Η M′ διαθέτει:

• Μία ταινία που χρησιμοποιείται μόνο για την ανάγνωση της εισόδου
(και στην οποία γράφεται η έξοδος στην περίπτωση που η M υπολογίζει
μία συνάρτηση).
• Μία ταινία στην οποία περιέχεται κωδικοποιημένη η τρέχουσα
κατάσταση της ταινίας T της M (με τη μορφή συμβολοσειρών της
μορφής (n, m), όπου n και m είναι σε δυαδική μορφή).
• k ταινίες που περιέχουν τις τιμές των k καταχωρητών R0 , . . . , Rk−1 της M
σε δυαδική μορφή.

Η τρέχουσα τιμή του μετρητή προγράμματος κ της M κωδικοποιείται μέσω


των καταστάσεων της M′ . Το σύνολο των καταστάσεων K ορίζεται ως
K = K1 ∪ · · · ∪ Kp , όπου K1 , . . . , Kp είναι ξένα μεταξύ τους σύνολα και p είναι
το πλήθος των εντολών του Π. Κάθε σύνολο καταστάσεων Ki
χρησιμοποιείται για να προσομοιωθεί η εντολή πi του Π.
65
Προσομοίωση μηχανής Turing τυχαίας προσπέλασης

Απόδειξη (συν.). Η M′ λειτουργεί σε τρεις φάσεις:

1. Στην πρώτη φάση, η M′ διαβάζει την είσοδο x = a1 a2 . . . an από την


πρώτη ταινία και την μεταφέρει κωδικοποιημένη ως
(1, E(a1 ))(2, E(a2 )) . . . (n, E(an )) στη δεύτερη ταινία.
2. Στη δεύτερη φάση, η M′ προσομοιώνει την τρέχουσα εντολή πi του
προγράμματος. Για παράδειγμα, αν η πi είναι η “add 4”, τότε η M′ εκτελεί
μία δυαδική πρόσθεση μεταξύ των δύο ταινιών που αντιστοιχούν στους
καταχωρητές R0 και R4 , γράφει το αποτέλεσμα στην ταινία που
αντιστοιχεί στον καταχωρητή R0 , και τέλος μεταβαίνει στην πρώτη
κατάσταση του Ki+1 .
3. Αφού ολοκληρωθεί η δεύτερη φάση και εκτελεστεί η εντολή “halt”, η M′
εισέρχεται στην τρίτη φάση όπου μεταφράζει την έξοδο της M στην
πρώτη ταινία σύμφωνα με τις συμβάσεις της πρότυπης μηχανής Turing.

Είναι εύκολο να δειχθεί ότι η μηχανή M′ απαιτεί πολυωνυμικά μεγαλύτερο


πλήθος βημάτων για να τερματίσει σε σχέση με το αντίστοιχο πλήθος των
βημάτων της M.
66
Μη ντετερμινιστικές μηχανές Turing
Μη ντετερμινιστικές μηχανές Turing

Η πρότυπη μηχανή Turing είναι ντετερμινιστική, δηλαδή υπάρχει μοναδική


κατάσταση στην οποία μεταβαίνει κάθε φορά. Η κατάσταση αυτή
καθορίζεται από τη συνάρτηση μετάβασης. Θα παρουσιάσουμε τώρα την μη
ντετερμινιστική παραλλαγή της μηχανής Turing.
Ορισμός
Μη ντετερμινιστική μηχανή Turing ονομάζουμε κάθε πεντάδα
M = (K, Σ, ∆, s, H) όπου τα K, Σ, s, H ορίζονται με τον ίδιο ακριβώς τρόπο
όπως και στην πρότυπη μηχανή Turing, αλλά αντί για συνάρτηση η ∆ είναι
μία σχέση
∆ ⊆ (K − H) × Σ × K × (Σ ∪ {←, →}).
Οι συνολικές καταστάσεις και οι σχέσεις ⊢M και ⊢∗M ορίζονται όπως και στην
πρότυπη μηχανή Turing.

Παρατήρηση
Αφού η ∆ είναι σχέση, για κάθε συνολική κατάσταση C μπορεί να
υπάρχουν πολλές συνολικές καταστάσεις C′ τέτοιες ώστε C ⊢M C′ .

67
Ημιαποφασισιμότητα

Ορισμός
Έστω M = (K, Σ, ∆, s, H) μη ντετερμινιστική μηχανή Turing. Η M δέχεται μία
είσοδο w ∈ (Σ − {▷, ⊔})∗ αν για κάποια h ∈ H, a ∈ Σ και u, v ∈ Σ∗ ,

(s, ▷⊔w) ⊢∗M (h, uav).

Η M ημιαποφασίζει μία γλώσσα L ⊆ (Σ − {▷, ⊔})∗ αν για κάθε


w ∈ (Σ − {▷, ⊔})∗ ,
w ∈ L ⇔ η M δέχεται την w.

Παρατήρηση
Μία ντετερμινιστική μηχανή δέχεται μία είσοδο αν υπάρχει τουλάχιστον
ένας υπολογισμός της που να τερματίζει (ακόμα κι αν όλοι οι υπόλοιποι
δεν τερματίζουν).

68
Αποφασισιμότητα

Οι ορισμοί της αποφασισιμότητας και της υπολογισιμότητας διαφέρουν


αρκετά σε σχέση με αυτούς των ντετερμινιστικών μηχανών Turing.

Ορισμός
Έστω M = (K, Σ, ∆, s, {y, n}) μη ντετερμινιστική μηχανή Turing. Η M
αποφασίζει μία γλώσσα L ⊆ (Σ − {▷, ⊔})∗ αν για κάθε w ∈ (Σ − {▷, ⊔})∗ ,

(i) υπάρχει φυσικός N που εξαρτάται από την M και την w έτσι ώστε να μην
υπάρχει συνολική κατάσταση C για την οποία (s, ▷⊔w) ⊢NM C.
(ii) w ∈ L αν και μόνο αν (s, ▷⊔w) ⊢∗M (y, uav) για κάποια u, v ∈ Σ∗ , a ∈ Σ.

Παρατήρηση
Το N του ορισμού αποτελεί ένα άνω φράγμα στα βήματα που απαιτούνται
για να αποφασίσει η M αν w ∈ L. Αυτό αποτελεί μία σοβαρή διαφορά στον
ορισμό της αποφασισιμότητας σε σχέση με την ντετερμινιστική μηχανή
Turing.

69
Υπολογισιμότητα

Ορισμός
Έστω M = (K, Σ, ∆, s, {y, n}) μη ντετερμινιστική μηχανή Turing. Η M
υπολογίζει μία συνάρτηση f : (Σ − {▷, ⊔})∗ → (Σ − {▷, ⊔})∗ αν για κάθε
w ∈ (Σ − {▷, ⊔})∗ ,

(i) υπάρχει φυσικός N που εξαρτάται από την M και την w έτσι ώστε να μην
υπάρχει συνολική κατάσταση C για την οποία (s, ▷⊔w) ⊢NM C.
(ii) (s, ▷⊔w) ⊢∗M (y, uav) αν και μόνο αν ua = ▷⊔ και v = f(w).

Παρατήρηση
Όπως και πριν, το N αποτελεί ένα άνω φράγμα στα βήματα που
απαιτούνται για να υπολογιστεί η f. Για να υπολογίζει η M την f, πρέπει όλοι
οι υπολογισμοί να οδηγούν σε ίδια έξοδο.

70
Παράδειγμα

Ο μη ντετερμινισμός απλοποιεί εντυπωσιακά την επίλυση προβλημάτων.


Έστω για παράδειγμα C το σύνολο των δυαδικών αναπαραστάσεων των
σύνθετων φυσικών αριθμών (θυμίζουμε ότι σύνθετος είναι κάθε μη πρώτος
αριθμός μεγαλύτερος της μονάδας). Μία μη ντετερμινιστική μηχανή M που
αποφασίζει τη C είναι η εξής:

1. Έστω n η είσοδος μεγέθους l με την οποία τροφοδοτείται η M. Η M


επιλέγει μη ντετερμινιστικά δύο δυαδικούς αριθμούς p, q > 1 με πλήθος
ψηφίων μικρότερο ή ίσο του l (προφανώς οι παράγοντες του n δεν
μπορούν να έχουν περισσότερα ψηφία από το n) και τους γράφει δίπλα
στην είσοδο (πάντα διαχωρίζοντας τους με κάποιο ειδικό σύμβολο).
2. Πολλαπλασιάζει τους p, q (είναι εύκολο να οριστεί μία μηχανή Turing
που το κάνει αυτό) γράφοντας το αποτέλεσμα p · q δίπλα στον n.
3. Ελέγχει αν ο n είναι ίσος με το p · q (ψηφίο προς ψηφίο) και τερματίζει
με y αν είναι ίσοι, και με n αν δεν είναι.

71
Παράδειγμα

Προφανώς, η M τερματίζει μετά από το πολύ N = N1 + N2 + N3 βήματα, όπου

• N1 είναι τα βήματα που απαιτούνται για να ολοκληρωθεί η γραφή δύο


αριθμών με το πολύ l ψηφία,
• N2 είναι τα βήματα που απαιτούνται για να τερματίσει η μηχανή που
πολλαπλασιάζει δύο αριθμούς με πλήθος ψηφίων το πολύ l, και
• N3 είναι τα βήματα που απαιτούνται για να ελεγχθεί αν δύο αριθμοί με
το πολύ l ψηφία είναι ίσοι.

Το N εξαρτάται μόνο από την M και την είσοδο n (για την ακρίβεια, το
μέγεθος της), επομένως η M αποφασίζει τη γλώσσα C.

72
Προσομοίωση μη ντετερμινιστικής μηχανής από ντετερμινιστική

Θεώρημα
Αν μία μη ντετερμινιστική μηχανή Turing M αποφασίζει ή ημιαποφασίζει
μία γλώσσα ή υπολογίζει μία συνάρτηση, τότε υπάρχει πρότυπη μηχανή
Turing M′ που αποφασίζει ή ημιαποφασίζει την ίδια γλώσσα ή υπολογίζει
την ίδια συνάρτηση.

Απόδειξη. Έστω M = (K, Σ, ∆, s, H) μία μη ντετερμινιστική μηχανή που


ημιαποφασίζει κάποια γλώσσα L (οι υπόλοιπες περιπτώσεις αποδεικνύονται
ανάλογα).
Θα δείξουμε ότι υπάρχει πρότυπη μηχανή Turing M′ που ημιαποφασίζει την
L. Αρκεί να δείξουμε ότι η L ημιαποφασίζεται από κάποια μηχανή Turing M′
με πολλές ταινίες.

73
Προσομοίωση μη ντετερμινιστικής μηχανής από ντετερμινιστική

Απόδειξη (συν.). Η βασική ιδέα είναι η εξής:


Η M′ εξετάζει τμηματικά όλους τους πιθανούς υπολογισμούς της M.
Αν η M βρίσκεται σε μία συνολική κατάσταση C, τότε υπάρχουν πολλές
συνολικές καταστάσεις C′ έτσι ώστε C ⊢M C′ . Πόσες όμως τέτοιες
διαφορετικές συνολικές καταστάσεις C′ υπάρχουν;
Αν υποθέσουμε ότι η M βρίσκεται σε κατάσταση q και διαβάζει a, τότε
εφόσον (q, a, p, b) ∈ ∆, η M μεταβαίνει σε κάποια κατάσταση p και ενεργεί
με b (γράφει b ή μετακινεί την ταινία κατά b). Το πλήθος των πιθανών
συνδυασμών (p, b) είναι το πολύ |K|(|Σ| + 2). Επομένως, υπάρχουν το πολύ
r = |K|(|Σ| + 2) συνολικές καταστάσεις C′ . Σε κάθε βήμα λοιπόν η M
μεταβαίνει σε r το πολύ συνολικές καταστάσεις. Η M′ θα πρέπει να εξετάζει
κάθε φορά όλες αυτές τις πιθανές συνολικές καταστάσεις.

74
Προσομοίωση μη ντετερμινιστικής μηχανής από ντετερμινιστική

Απόδειξη (συν.). Ορίζουμε μία βοηθητική ντετερμινιστική μηχανή Md με δύο


ταινίες η οποία λειτουργεί ως εξής:

1. Η πρώτη ταινία περιέχει την είσοδο της M, ενώ η δεύτερη περιέχει μία
συμβολοσειρά i1 i2 . . . in ∈ {1, . . . , r}∗ . Η συμβολοσειρά i1 i2 . . . in
κωδικοποιεί το μονοπάτι συνδυασμών κατάστασης-ενέργειας το οποίο
εξετάζει η Md .
2. Στο πρώτο βήμα, η Md ενεργεί σύμφωνα με τον συνδυασμό i1 , δηλαδή
μεταξύ των πιθανών συνδυασμών κατάστασης-ενέργειας
(p1 , b1 ), . . . , (pr , br ) που μπορούν να εφαρμοστούν στην αρχική
συνολική κατάσταση, η Md επιλέγει την (pi1 , bi1 ). Αφού το κάνει αυτό, η
Md μετακινεί την κεφαλή της δεύτερης ταινίας μία θέση δεξιά. Στο
επόμενο βήμα, η Md ενεργεί σύμφωνα με τον συνδυασμό i2 , μετά με τον
i3 , κ.ο.κ. Μετά από n βήματα, η Md τερματίζει.

75
Προσομοίωση μη ντετερμινιστικής μηχανής από ντετερμινιστική

Απόδειξη (συν.). Ορίζουμε τώρα μία μηχανή M′ με τρεις ταινίες η οποία


λειτουργεί ως εξής:

1. Η πρώτη ταινία περιέχει πάντα την αρχική είσοδο και δεν μεταβάλλεται
ποτέ.
2. Η δεύτερη και η τρίτη ταινία χρησιμοποιούνται από την Md . Κάθε φορά
που καλείται η Md να εκτελέσει την προσομοίωση ενός υπολογισμού, η
είσοδος αντιγράφεται από την πρώτη στη δεύτερη ταινία (έτσι ώστε
κάθε φορά η Md να ξεκινάει από την αρχική είσοδο τους υπολογισμούς
της). Η τρίτη ταινία περιέχει αρχικά την κενή συμβολοσειρά. Η τρίτη
ταινία περιέχει κάθε φορά μία συμβολοσειρά i1 i2 . . . in ∈ {1, . . . , r}∗ που
κωδικοποιεί το μονοπάτι κατάστασης-ενέργειας που εξετάζει η Md .
3. Κάθε φορά που η Md τελειώνει την προσομοίωση της, η M′ , γράφει στη
δεύτερη ταινία την αμέσως επόμενη λεξικογραφικά συμβολοσειρά του
{1, . . . , r}∗ . Ας συμβολίσουμε με B τη μηχανή Turing που ενεργεί κατ’
αυτό τον τρόπο.

76
Προσομοίωση μη ντετερμινιστικής μηχανής από ντετερμινιστική

Απόδειξη (συν.). Η M′ αναπαρίσταται ως εξής:

όπου C1→2 είναι η μηχανή Turing που αντιγράφει την πρώτη ταινία στη
δεύτερη, B3 είναι η μηχανή Turing που γράφει στην τρίτη ταινία την αμέσως
επόμενη λεξικογραφικά συμβολοσειρά του {1, . . . , r}∗ , και M2,3
d είναι η Md
που λειτουργεί στις ταινίες 2 και 3 της M.
Είναι εύκολο να δειχθεί ότι η M′ τερματίζει σε μία είσοδο αν και μόνο αν η M
τερματίζει στην ίδια είσοδο. Αυτό συμβαίνει γιατί η B παράγει όλους τους
πιθανούς συνδυασμούς κατάστασης-ενέργειας.
Παρατήρηση
Το πλήθος των βημάτων που απαιτούνται από την M′ για να τερματίσει
είναι εκθετικό ως προς το μέγεθος της εισόδου. Επομένως, η
προσομοίωση επιτυγχάνεται με πολύ μεγάλο υπολογιστικό κόστος.
77
Παραλλαγές της μη ντετερμινιστής μηχανής Turing

Όπως ακριβώς επεκτείναμε την πρότυπη μηχανή Turing προσθέτοντας


ταινίες, με ανάλογο τρόπο μπορούμε να επεκτείνουμε και τη μη
ντετερμινιστική μηχανή Turing.
Η υπολογιστική ισχύς των μηχανών αυτών παραμένει η ίδια, ενώ το κόστος
της προσομοίωσης είναι πάλι πολυωνυμικό.

78

You might also like