Η μηχανή Turing είναι ένα μοντέλο τυποποίησης της έννοιας αποτελεσματικής διεργασίας ή ισοδύναμα του αλγορίθμου, με αυτή του υπολογιστή γενικού σκοπού. Το μοντέλο αυτό εισήγαγε ο Άγγλος μαθηματικός Alan Turing το 1936 ο οποίος θεωρείται και "πατέρας" της θεωρητικής επιστήμης των υπολογιστών.
Σε μια μηχανή Turing πρέπει να υπάρχουν ορισμένες βασικές ιδιότητες. Πρώτη από αυτές είναι ότι μια διεργασία θα πρέπει να έχει πεπερασμένη περιγραφή με άλλα λόγια να ορίζεται με ένα πεπερασμένο αριθμό βημάτων υπολογισμού. Η δεύτερη ιδιότητα αναφέρεται στα βήματα αυτά που θα πρέπει να είναι διακριτά μεταξύ τους και το καθένα να εκτελείται σε πεπερασμένο χρόνο, ώστε τελικά να έχουμε μια αποτελεσματική διεργασία.
Γίνεται λοιπόν κατανοητό ότι μια μηχανή Turing δεν απέχει πολύ ως μοντέλο, από αυτό των πεπερασμένων αυτόματων. Όντως η μηχανή αυτή διαθέτει μια μονάδα ελέγχου, μια ταινία καταγραφής/ ανάγνωσης και μια κεφαλή εγγραφής / ανάγνωσης. Η μονάδα ελέγχου ουσιαστικά είναι ένα πεπερασμένο αυτόματο στοίβας, με την διάφορα ότι μπορεί να γράφει ή να διαβάζει σύμβολα σε οποιαδήποτε θέση της ταινίας, ενώ η ίδια η ταινία χρησιμεύει ως μια μονάδα εισόδου και εξόδου δεδομένων.
Στην μηχανή Turing μπορούμε να εφαρμόσουμε τρία μοντέλα ταινιών, όπως δίνονται παρακάτω:
1) ταινία με αρχή και άπειρη προς δεξιά.
2) ταινία απεριόριστη προς αριστερά και δεξιά
3) πολλαπλές k- ταινίες.
Η ποιο συνηθισμένη μορφή είναι αυτή της πρώτης περίπτωσης. Κατά την μορφή αυτή, μέλημά μας είναι να μην υπερβούμε την αρχική θέση της ταινίας και ολοσθήσουμε περισσότερες θέσεις αριστερότερα από αυτή. Αν κάτι τέτοιο συμβεί, τότε αναφέρουμε ότι η μηχανή "κρεμάει" δηλαδή η κεφαλή βρίσκεται εκτός της ταινίας, πράγμα που καθιστά τον υπολογισμό μας άστοχο, αφού η μηχανή θεωρείται ισοδύναμο με ένα ατέρμονο βρόχο.
Μια μηχανή Turing λέμε ότι "τερματίζει" όταν η κεφαλή της μεταβεί σε μια κατάσταση τερματισμού h δηλαδή αναγνώσει ένα ειδικό σύμβολο στην ταινία το οποίο έχουμε ορίσει εμείς. Αυτό για εκπαιδευτικούς σκοπούς και για να υπάρξει μια "κοινή γλώσσα" αναφοράς θεωρούμε ότι είναι το #.
Για γλώσσα L και συμβολοσειρά w που ανήκει στην γλώσσα, θα λέμε ότι μια μηχανή Turing αποφασίζει για την γλώσσα αν και μόνο αν η μηχανή σταματά σε αποτίμηση #Y# ή #Ν# που αντιστοιχούν στις έννοιες "Ναι" ή "Όχι" με τα σύμβολα αυτά να ανήκουν στο αλφάβητο της γλώσσας. Τότε θα λέμε ότι η γλώσσα είναι Turing αποφασίσιμη . Γενικά αν η μηχανή φτάνει σε έναν συνδυασμό τερματισμού με είσοδο την w τότε η γλώσσα L είναι Turing αποδεκτή .
Για τον υπολογισμό αυτό σχηματίσουμε ένα διάγραμμα καταστάσεων χρησιμοποιώντας σύμβολα που παρουσιάζουν την λειτουργία της μηχανής, όπως τη κίνηση της κεφαλής κατά μια θέση αριστερά ή δεξιά L και R αντίστοιχα, την ανάγνωση συμβόλου από την κεφαλή όπως σ ≠ # ή την κατασκευή υπό- μηχανών όπως της δεξιάς ή αριστερής ολίσθησης στην ταινία.
Άλλοι συμβολισμοί σε διάγραμμα καταστάσεων μηχανής Turing που εκφράζουν την κίνηση της κεφαλής στην ταινία καθώς την εγγραφή και ανάγνωση είναι:
L# πήγαινε αριστερά μέχρι να βρεις #
R# πήγαινε δεξιά μέχρι να βρεις #.
Lσ πήγαινε αριστερά μέχρι να βρεις σ.
Rσ πήγαινε δεξιά μέχρι να βρεις σ.
L# πήγαινε μια θέση αριστερά και γράψε #.
R# πήγαινε μια θέση δεξιά και γράψε #.
σL# γράψε σ και πήγαινε αριστερά μέχρι να βρεις #
#R# γράψε # και πήγαινε δεξιά μέχρι να βρεις #.
Βέβαια γίνεται κατανοητό ότι μπορούμε να υλοποιήσουμε αρκετούς ακόμα συνδυασμούς καταστάσεων καθώς και ανακυκλώσεις που σε ένα διάγραμμα εκφράζονται μέσα από βέλη κατεύθυνσης.
Άλλοι συμβολισμοί σε διάγραμμα καταστάσεων μηχανής Turing που εκφράζουν την κίνηση της κεφαλής στην ταινία καθώς την εγγραφή και ανάγνωση είναι:
L# πήγαινε αριστερά μέχρι να βρεις #
R# πήγαινε δεξιά μέχρι να βρεις #.
Lσ πήγαινε αριστερά μέχρι να βρεις σ.
Rσ πήγαινε δεξιά μέχρι να βρεις σ.
L# πήγαινε μια θέση αριστερά και γράψε #.
R# πήγαινε μια θέση δεξιά και γράψε #.
σL# γράψε σ και πήγαινε αριστερά μέχρι να βρεις #
#R# γράψε # και πήγαινε δεξιά μέχρι να βρεις #.
Βέβαια γίνεται κατανοητό ότι μπορούμε να υλοποιήσουμε αρκετούς ακόμα συνδυασμούς καταστάσεων καθώς και ανακυκλώσεις που σε ένα διάγραμμα εκφράζονται μέσα από βέλη κατεύθυνσης.
Ως παράδειγμα θα δώσουμε τον υπολογισμό μιας συνάρτησης f(w) =ww με w∈{a,b}*
μια συμβολοσειρά w θα είναι της μορφής w= #aab# με τη θέση της κεφαλής να βρίσκεται στο τελευταίο σύμβολο # της. Κατά συνέπεια η συνάρτηση f(w) υπολογίζει την #aabaab# δηλαδή το διπλάσιο της. Το παρακάτω διάγραμμα καταστάσεων ικανοποιεί ακριβώς την συνάρτηση.
Ας δούμε αναλυτικά τις διεργασίες της μηχανής αυτής. Μετακινούμε την κεφαλή στην αρχή της ταινίας (L#) και μετατοπίζοντας την κατά μια θέση δεξιά "διαβάζει" το πρώτο σύμβολο (σ ≠ #). Στην συνέχεια γράφει # και μετακινείται στο τέλος της συμβολοσειράς (#R#). Εκεί "γράφει" το σύμβολο που έχει διαβάσει η μηχανή (σ). 'Έπειτα μετακινείται αριστερά μέχρι να βρει # (εντολή L#) και γράφει ξανά το σύμβολο σ. Στην συνέχεια επαναλαμβάνει την διαδικασία (βέλος ανακύκλωσης).
Αν δια βάσει # τότε η μηχανή γράφει # και μετακινείται δεξιά μέχρι το τέλος της συμβολοσειράς και σταματά. Δηλαδή η συνάρτηση f(w)=ww είναι Turing υπολογίσιμη.
Δημοσίευση σχολίου