244 ΚΕΦ ΑΛΑΙΟ 8. ΥΠΟΛΟΓΙΣΙΜΕΣ ΣΥΝΑΡΤΗΣΕΙΣ Η f είναι μία μερική συνάρτηση στο πεδίο X, αν και μόνο αν η συνάρτηση ορίζεται για μηδέν ή περισσότερα στοι

Σχετικά έγγραφα
num(m(w 1 ;... ; w k )) = f(num(w 1 ),..., num(w k ))

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύ

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύ

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύ

Μη επιλυσιμότητα I. Απόδειξη. Ορίζουμε # # =

Πεπερασμένος έλεγχος καταστάσεων

Σειρά Προβλημάτων 4 Λύσεις

214 ΚΕΦΑΛΑΙΟ 7. ΕΠΙΛΥΣΙΜΟΤΗΤΑ - ΜΗ ΕΠΙΛΥΣΙΜΟΤΗΤΑ 7.1 Το Πρόβλημα του Τερματισμού Θεώρημα 7.1 (Πρόβλημα του Τερματισμού - ημιαπόφαση) Η γλώσσα του Προβ

Θεωρία Υπολογισμού Άρτιοι ΑΜ. Διδάσκων: Σταύρος Κολλιόπουλος. eclass.di.uoa.gr. Περιγραφή μαθήματος

Θεωρία Υπολογισμού Αρτιοι ΑΜ Διδάσκων: Σταύρος Κολλιόπουλος eclass.di.uoa.gr

Ψευδοκώδικας. November 7, 2011

t M (w) T ( w ) O( n) = O(n 2 )

L A P. w L A f(w) L B (10.1) u := f(w)

Σειρά Προβλημάτων 4 Λύσεις

Περιεχόμενα ΜΤ Τυχαίας Προσπέλασης Θεωρία Υπολογισμού Ενότητα 23: Μηχανές Turing Τυχαίας Προσπέλασης Επ. Καθ. Π. Κατσαρός Τμήμα Πληροφορικής Επ. Καθ.

Σειρά Προβλημάτων 4 Λύσεις

Προβλήματα, αλγόριθμοι, ψευδοκώδικας

Αλγόριθμοι για αυτόματα

Σειρά Προβλημάτων 4 Λύσεις

Πληροφορική 2. Αλγόριθμοι

Υπολογίσιμες Συναρτήσεις

Περιεχόμενα Ορισμός και λειτουργία των μηχανών Turing Θεωρία Υπολογισμού Ενότητα 20: Μηχανές Turing: Σύνθεση και Υπολογισμοί Επ. Καθ. Π. Κατσαρός Τμήμ

Σειρά Προβλημάτων 4 Λύσεις

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύ

Περιεχόμενα 1 Πρωτοβάθμια Λογική Χρήστος Νομικός ( Τμήμα Μηχανικών Η/Υ Διακριτά και Πληροφορικής Μαθηματικά Πανεπιστήμιο ΙΙ Ιωαννίνων ) / 60

Σειρά Προβλημάτων 4 Λύσεις

Αποφασισιµότητα / Αναγνωρισιµότητα. Μη Επιλύσιµα Προβλήµατα. Η έννοια της αναγωγής. Τερµατίζει µια δεδοµένη TM για δεδοµένη είσοδο;

f(t) = (1 t)a + tb. f(n) =

Σημειώσεις Λογικής I. Εαρινό Εξάμηνο Καθηγητής: Λ. Κυρούσης

CSC 314: Switching Theory

ΘΕΩΡΙΑ ΥΠΟΛΟΓΙΣΜΩΝ ΚΑΙ ΑΥΤΟΜΑΤΩΝ

Σειρά Προβλημάτων 4 Λύσεις

Θεωρία Υπολογισμού και Πολυπλοκότητα Αναγωγές

Θεωρία Υπολογισμού και Πολυπλοκότητα

ΕΠΛ 211: Θεωρία Υπολογισμού και Πολυπλοκότητας. Διάλεξη 16: Αναγωγές

HEAD INPUT. q0 q1 CONTROL UNIT

ΘΕΩΡΙΑ ΥΠΟΛΟΓΙΣΜΩΝ ΚΑΙ ΑΥΤΟΜΑΤΩΝ

Υπολογιστικά & Διακριτά Μαθηματικά

10.1 Υπολογίσιμες συναρτήσεις και αναδρομικά σύνολα

Ερωτήσεις πολλαπλής επιλογής - Κεφάλαιο 2. Α1. Ο αλγόριθμος είναι απαραίτητος μόνο για την επίλυση προβλημάτων πληροφορικής

Φροντιστήριο 8 Λύσεις

Θεωρία Υπολογισμού και Πολυπλοκότητα

Φροντιστήριο 8 Λύσεις

Η δυαδική σχέση M ( «παράγει σε ένα βήμα» ) ορίζεται ως εξής: (q, w) M (q, w ), αν και μόνο αν w = σw, για κάποιο σ Σ

Επαναληπτικές Διαδικασίες

Λύσεις 4ης Σειράς Ασκήσεων

Υπολογιστικά & Διακριτά Μαθηματικά

Φ(s(n)) = s (Φ(n)). (i) Φ(1) = a.

ΘΕΩΡΙΑ ΥΠΟΛΟΓΙΣΜΩΝ ΚΑΙ ΑΥΤΟΜΑΤΩΝ

5 ΕΙΣΑΓΩΓΗ ΣΤΗ ΘΕΩΡΙΑ ΑΛΓΟΡΙΘΜΩΝ

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΠΡΟΣΟΜΟΙΩΣΗΣ ΠΑΝΕΛΛΑΔΙΚΩΝ ΣΧΟΛΙΚΟΥ ΕΤΟΥΣ

Πρόβλημα 29 / σελίδα 28

Μια TM µπορεί ένα από τα δύο: να αποφασίζει µια γλώσσα L. να αναγνωρίζει (ηµιαποφασίζει) µια γλώσσα L. 1. Η TM «εκτελεί» τον απαριθµητή, E.

Αριθμήσιμα σύνολα. Μαθηματικά Πληροφορικής 5ο Μάθημα. Παραδείγματα αριθμήσιμων συνόλων. Οι ρητοί αριθμοί

Διακριτά Μαθηματικά ΙΙ Χρήστος Νομικός Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων 2018 Χρήστος Νομικός ( Τμήμα Μηχανικών Η/Υ Διακριτά

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Λογική. Δημήτρης Πλεξουσάκης

ΕΠΛ 211: Θεωρία Υπολογισμού και Πολυπλοκότητας. Διάλεξη 13: Παραλλαγές Μηχανών Turing και Περιγραφή Αλγορίθμων

ΕΠΛ 211: Θεωρία Υπολογισμού και Πολυπλοκότητας. Επανάληψη Μαθήματος

K15 Ψηφιακή Λογική Σχεδίαση 7-8: Ανάλυση και σύνθεση συνδυαστικών λογικών κυκλωμάτων

ΑΝΑΛΥΣΗ 1 ΕΝΑΤΟ ΜΑΘΗΜΑ, Μ. Παπαδημητράκης.

ΤΕΛΟΣ 1ΗΣ ΑΠΟ 5 ΣΕΛΙΔΕΣ

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΔΙΑΓΩΝΙΣΜΑ ΠΡΟΣΟΜΟΙΩΣΗΣ 23/04/2012. Α. Να απαντήσετε με Σ ή Λ στις παρακάτω προτάσεις:

Κεφάλαιο 2 ο Βασικές Έννοιες Αλγορίθμων (σελ )

ΚΕΦΑΛΑΙΟ 10 ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ

Διακριτά Μαθηματικά ΙΙ Χρήστος Νομικός Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων 2018 Χρήστος Νομικός ( Τμήμα Μηχανικών Η/Υ Διακριτά

Σειρά Προβλημάτων 5 Λύσεις

Υπολογιστικά & Διακριτά Μαθηματικά

Σειρά Προβλημάτων 5 Λύσεις

R ισούται με το μήκος του. ( πρβλ. την ιστορική σημείωση 3.27 στο τέλος

Όριο συνάρτησης στο x. 2 με εξαίρεση το σημείο A(2,4) Από τον παρακάτω πίνακα τιμών και τη γραφική παράσταση του παραπάνω σχήματος παρατηρούμε ότι:

ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΑΡΧΕΣ ΤΗΣ ΕΠΙΣΤΗΜΗΣ ΤΩΝ Η/Υ

2 ΟΥ και 8 ΟΥ ΚΕΦΑΛΑΙΟΥ

ΕΡΓΑΣΤΗΡΙΟ 6: Συναρτήσεις και Αναδρομή

4.4 Μετατροπή από μία μορφή δομής επανάληψης σε μία άλλη.

Σειρά Προβλημάτων 4 Λύσεις

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

771 Η - Θεωρία Υπολογισµών και Αλγορίθµων

A. Να γράψετε τον αριθμό της κάθε μιας από τις παρακάτω προτάσεις και δίπλα. το γράμμα Σ, εάν είναι σωστή, ή το γράμμα Λ, εάν είναι λανθασμένη.

ΕΠΛ 211: Θεωρία Υπολογισμού και Πολυπλοκότητας. Διάλεξη 15: Διαγνωσιμότητα (Επιλυσιμότητα) ΙΙ

ΤΕΛΙΚΟ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ

10. Με πόσους και ποιους τρόπους μπορεί να αναπαρασταθεί ένα πρόβλημα; 11. Περιγράψτε τα τρία στάδια αντιμετώπισης ενός προβλήματος.

Θεωρία Υπολογισμού και Πολυπλοκότητα Κανονικές Γλώσσες (1)

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΣΧΟΛΙΚΟΥ ΕΤΟΥΣ

Στοχαστικές Στρατηγικές. διαδρομής (1)

Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου. Θεωρία Υπολογισμού. Ενότητα 11 : Γραμματικές χωρίς συμφραζόμενα. Αλέξανδρος Τζάλλας

Διακριτά Μαθηματικά ΙΙ Χρήστος Νομικός Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων 2018 Χρήστος Νομικός ( Τμήμα Μηχανικών Η/Υ Διακριτά

q 0 q 0.2 q 0.1 q 0.05 q 0.05 q 0.25 q 0.15 q 0.1 q 0.2 q 0.25 q 0.25 q 0.25

Θεωρητικές Ασκήσεις. ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ. 1 ο Μέρος

53 Χρόνια ΦΡΟΝΤΙΣΤΗΡΙΑ ΜΕΣΗΣ ΕΚΠΑΙΔΕΥΣΗΣ Σ Α Β Β Α Ϊ Δ Η Μ Α Ν Ω Λ Α Ρ Α Κ Η

ΠΕΡΙΕΧΟΜΕΝΑ. Εντολές επιλογής Εντολές επανάληψης

1. Πότε χρησιμοποιούμε την δομή επανάληψης; Ποιες είναι οι διάφορες εντολές (μορφές) της;

Σχέδια μαθημάτων για την δημιουργία συναρτήσεων υπολογισμού του ΜΚΔ και του ΕΚΠ στην MSWLogo

Υπολογιστική άλγεβρα Ενότητα 6: Ο αλγόριθμος της διαίρεσης

Διδακτική της Πληροφορικής ΙΙ

Φροντιστήριο 9 Λύσεις

Εφαρμογές της Λογικής στην Πληροφορική

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον. Διάρκεια 3 ώρες. Όνομα... Επώνυμο... Βαθμός...

Διδακτικά προβλήματα σχετικά με την έννοια της επανάληψης

Θεωρία Υπολογισμού Αλφάβητα, Γλώσσες, Κανονικές Εκφράσεις

Ας δούμε λίγο την θεωρία με την οποία ασχοληθήκαμε μέχρι τώρα.

Transcript:

Κεφάλαιο 8 Υπολογίσιμες Συναρτήσεις Σύνοψη Εχοντας αναπτύξει τη θεωρία γύρω από τις Μηχανές Turing (ΜΤ) δεν περιοριζόμαστε πλέον μόνο στην ανάλυση προβλημάτων απόφασης γλωσσών (βλ. Ενότητα 1.2.3). Οι ΜΤ μπορούν να υπολογίζουν συναρτήσεις με πεδίο τιμών διαφορετικό από το σύνολο {Αποδοχή, Απόρριψη}. Στο κεφάλαιο αυτό ασχολούμαστε με τη θεωρία, που μελετά το τι ακριβώς υπολογίζεται και τι όχι, καθώς και με τις ιδιότητες συναρτήσεων διαφορετικών κλάσεων, ως προς την υπολογισιμότητά τους. Προαπαιτούμενη γνώση Για την κατανόηση του κεφαλαίου θα πρέπει ο αναγνώστης να έχει αφομοιώσει τις μαθηματικές έννοιες του Παραρτήματος I, καθώς και τους ορισμούς και τα αποτελέσματα των Κεφαλαίων 6 και 7. 8.1 Ορισμός Υπολογίσιμων Συναρτήσεων Ο Ορισμός 8.1 περιγράφει δύο είδη συναρτήσεων και προβλέπει στη δεύτερη περίπτωση, στοιχεία του πεδίου ορισμού για τα οποία δεν ορίζεται η τιμή της συνάρτησης. Ορισμός 8.1 Εστω f : X Y μία οποιαδήποτε συνάρτηση. Η f είναι μία πλήρης συνάρτηση στο πεδίο X, αν και μόνο αν η συνάρτηση ορίζεται για όλα τα στοιχεία του X. 243

244 ΚΕΦ ΑΛΑΙΟ 8. ΥΠΟΛΟΓΙΣΙΜΕΣ ΣΥΝΑΡΤΗΣΕΙΣ Η f είναι μία μερική συνάρτηση στο πεδίο X, αν και μόνο αν η συνάρτηση ορίζεται για μηδέν ή περισσότερα στοιχεία του X. Παράδειγμα 8.1 (Μερική συνάρτηση) Ας θεωρήσουμε τη συνάρτηση steps, που ορίζεται σε ένα πεδίο αποτελούμενο με στοιχεία της μορφής < M, w > και επιστρέφει τον αριθμό των βημάτων, που απαιτούνται για να τερματίσει η ΜΤ M όταν εκτελείται με είσοδο w. Η steps ορίζεται ως μερική συνάρτηση στο πεδίο {< M, w >}, αφού δεν ορίζεται για τις τιμές < M, w > με τις περιπτώσεις εκείνες, που η M δεν τερματίζει με είσοδο w. Αν όμως ορίζαμε τη steps σε ένα πιο περιορισμένο πεδίο, δηλαδή στο τότε θα ήταν πλήρης. {< M, w >: η ΜΤ M τερματίζει με είσοδο w} Ποιος είναι όμως ο λόγος για τον οποίο επιδιώκουμε να διευρύνουμε τον ορισμό του τι θεωρείται συνάρτηση και να συμπεριλάβουμε σε αυτόν και τις μερικές συναρτήσεις; Θα μπορούσαμε αντί για αυτό, να περιορίσουμε το πεδίο ορισμού τους, όπως κάναμε στο Παράδειγμα 8.1, ώστε ο ορισμός της συνάρτησης να είναι συμβατός με αυτό, που στα μαθηματικά λέμε συνάρτηση. Η διαφορά από την έννοια της συνάρτησης στα μαθηματικά είναι ότι στη Θεωρία Υπολογισμού μας ενδιαφέρει να γράφουμε προγράμματα, δηλαδή ΜΤ, που να μπορούν να υπολογίζουν συναρτήσεις. Το σύνολο των τιμών, στο οποίο αναγκαστικά ορίζεται η steps είναι η γλώσσα H από την Ενότητα 7.1 και η H δεν ανήκει στο D, αφού δεν είναι αποφασίσιμη γλώσσα. Άρα ασχέτως με τη ΜΤ, που θα σχεδιάσουμε για τον υπολογισμό της steps, δεν υπάρχει ΜΤ, που θα εξετάζει μία τιμή και θα μπορεί να αποφασίσει αν θα μπορούσε να εκτελεστεί η ΜΤ για τον υπολογισμό της steps. Ετσι λοιπόν η steps θα είναι μερική και όχι πλήρης συνάρτηση στο πεδίο εκείνο, στο οποίο θα εκτελείται το πρόγραμμα, που την υλοποιεί. Αυτό σημαίνει ότι ένα οποιοδήποτε τέτοιο πρόγραμμα θα αποτυγχάνει να τερματίσει για κάποιες εισόδους! Εστω M μία ΜΤ με αρχική κατάσταση s, τελική κατάσταση h, αλφάβητο εισόδου Σ και αλφάβητο ταινίας Γ. Εστω ότι η αρχική διαμόρφωση της M είναι (s, w), όπου w Σ. Ορίζουμε τη συνάρτηση M(w) = z, αν και μόνο αν (s, w) M (h, z), δηλαδή όταν η M ξεκινάει με είσοδο w Σ τερματίζει αφήνοντας τη z στην ταινία με την κεφαλή ανάγνωσης/εγγραφής στη θέση ακριβώς αριστερά της z.

8.1. ΟΡΙΣΜΟΣ ΥΠΟΛΟΓΙΣΙΜΩΝ ΣΥΝΑΡΤΗΣΕΩΝ 245 Στον Ορισμό 6.5 της Ενότητας 6.2, ορίσαμε το τι σημαίνει για μία συνάρτηση f να υπολογίζεται από μία ΜΤ M. Διευκρινίσαμε ότι όταν η f ορίζεται μόνο σε ένα υποσύνολο του Σ και υπάρχει ΜΤ M, που τερματίζει με τη σωστή τιμή για όλες τις εισόδους, που η f ορίζεται, τότε λέμε την f μερικώς υπολογίσιμη. Για όλες τις άλλες εισόδους, η M αποτυγχάνει να τερματίσει. Εστω f μία μερικώς υπολογίσιμη συνάρτηση με τιμές, που ορίζονται μόνο για ένα γνήσιο υποσύνολο του Σ. Μία οποιαδήποτε ΜΤ, που υπολογίζει την f θα αποτυγχάνει σε κάποιες εισόδους. Ας θεωρήσουμε τώρα μόνο τις συναρτήσεις f, που το πεδίο X στο οποίο ορίζονται είναι αποφασίσιμο, δηλαδή τις συναρτήσεις, που είναι πλήρεις στο αποφασίσιμο σύνολο X. Για μία τέτοια f, ορίζουμε τη νέα συνάρτηση f, ίδια με την f, εκτός από το πεδίο τιμών που θα περιλαμβάνει μία επιπλέον τιμή, την Error. Για οποιαδήποτε είσοδο z, που συμβαίνει η f να μην ορίζεται, έχουμε f (z) =Error. Άρα, δοθείσης μιας ΜΤ, που υπολογίζει την f, μπορούμε να κατασκευάσουμε μία νέα ΜΤ M, που υπολογίζει την f και τερματίζει πάντα. Αν η f ορίζεται στο σύνολο X, εφόσον το X ανήκει στο D, θα υπάρχει μία ΜΤ M X, που θα το αποφασίζει. Τώρα είμαστε σε θέση να δώσουμε έναν πιο ευρύ και χρήσιμο ορισμό για την υπολογισιμότητα: Ορισμός 8.2 Εστω μία συνάρτηση f, που ορίζεται σε ένα σύνολο X Σ, που αποφασίζεται από τη ΜΤ M X. Η f είναι υπολογίσιμη, αν και μόνο αν υπάρχει ΜΤ M, που τερματίζει για όλες τις εισόδους υπολογίζοντας μία συνάρτηση f ως εξής: M (x) = 1. Εκτέλεσε την M X με είσοδο x. 2. Αν απορρίπτεται, τότε Error. 3. Αν είναι αποδεκτή, τότε για μία κατάλληλη ΜΤ M, M(x) = f(x). Ισοδύναμα, μία συνάρτηση f είναι υπολογίσιμη, αν και μόνο αν είναι μερικώς υπολογίσιμη και το πεδίο ορισμού της είναι ένα αποφασίσιμο σύνολο. Ο Ορισμός 8.2 επεκτείνεται κατάλληλα και για τις συναρτήσεις f, που τα πεδία ορισμού και τιμών δεν είναι σύνολα συμβολοσειρών, όπως η συνάρτηση succ του Παραδείγματος 6.5. Σε αυτή την περίπτωση, η συνάρτηση f είναι υπολογίσιμη, αν και μόνο αν ισχύουν οι παρακάτω συνθήκες: Υπάρχουν αλφάβητα Σ και Σ, με μία κωδικοποίηση των στοιχείων του πεδίου ορισμού της f ως συμβολοσειρές του Σ και μία κωδικοποίηση των στοιχείων του πεδίου τιμών ως συμβολοσειρές του Σ.

246 ΚΕΦ ΑΛΑΙΟ 8. ΥΠΟΛΟΓΙΣΙΜΕΣ ΣΥΝΑΡΤΗΣΕΙΣ Υπάρχει μία υπολογίσιμη συνάρτηση f, τέτοια ώστε για κάθε w Σ : Αν w =< x > και x είναι ένα στοιχείο του πεδίου ορισμού της f, τότε f (w) =< f(x) > Αν η w δεν είναι η κωδικοποίηση κάποιου στοιχείου του πεδίου ορισμού της f (δεν είναι συντακτικά καλώς ορισμένη ή κωδικοποιεί μία τιμή για την οποία δεν ορίζεται η f), τότε f (w) =Error. Παράδειγμα 8.2 (Μερικώς υπολογίσιμη συνάρτηση) Στο Παράδειγμα 8.1, είδαμε ότι η συνάρτηση steps είναι πλήρης στο σύνολο {< M, w >: η ΜΤ M τερματίζει με είσοδο w}, αλλά είναι μερική συνάρτηση στο σύνολο {< M, w >}. Η steps διαπιστώνουμε πως είναι μερικώς υπολογίσιμη συνάρτηση, αφού υπολογίζεται από την παρακάτω ΜΤ τριών ταινιών: M steps (x) = 1. Αν η x δεν είναι συντακτικά μία καλώς ορισμένη συμβολοσειρά < M, w >, τότε επανέλαβε. 2. Αν η x είναι συντακτικά καλώς ορισμένη συμβολοσειρά < M, w >, τότε: 2.1 Αντέγραψε την M στην Ταινία 3. 2.2 Αντέγραψε την w στην Ταινία 2. 2.3 Γράψε 0 στην Ταινία 1. 2.4 Προσομοίωσε την M για είσοδο w στην Ταινία 2, διατηρώντας ένα μετρητή των βημάτων της M στην Ταινία 1. Η M steps τερματίζει, όταν η είσοδός της είναι καλώς ορισμένη και συμβαίνει η M να τερματίζει για είσοδο w. Αν η M steps τερματίσει, τότε βρίσκει την τιμή steps(< M, w >) στην Ταινία 1. Ομως από το Θεώρημα 6.1, υπάρχει μία ΜΤ M steps μιας ταινίας, που η έξοδός της είναι ίδια με την τιμή της M steps, που τελικά καταγράφεται στην Ταινία 1. Επομένως η M steps θα είναι μία απλή ΜΤ, που υπολογίζει τη steps και αυτό αποδεικνύει ότι η steps είναι μερικώς υπολογίσιμη. Ομως η steps δεν είναι υπολογίσιμη. Πιο συγκεκριμένα, αποδεικνύεται ότι δεν υπάρχει ΜΤ, που υπολογίζει τη συνάρτηση steps, η οποία ορίζεται ως εξής: steps (x) = Αν x δεν είναι συντακτικά καλώς ορισμένη < M, w >, τότε Error Αν x είναι συντακτικά καλώς ορισμένη, αλλά η steps(< M,

8.1. ΟΡΙΣΜΟΣ ΥΠΟΛΟΓΙΣΙΜΩΝ ΣΥΝΑΡΤΗΣΕΩΝ 247 w >) δεν ορίζεται (δηλ. η M δεν τερματίζει), τότε Error Αν η steps(< M, w >) ορίζεται (δηλ. η M τερματίζει), τότε steps(< M, w >). Αποδεικνύουμε ότι δεν υπάρχει τέτοια ΜΤ με αναγωγή από το H. Ας υποθέσουμε ότι υπάρχει και ας την ονομάσουμε M steps. Τότε θα μπορούσαμε να ορίσουμε μία ΜΤ D H, που θα αποφασίζει τη γλώσσα H = {< M, w >: η ΜΤ M τερματίζει για τη συμβολοσειρά εισόδου w}: D H (< M, w >) = 1. Εκτέλεσε την M steps (< M, w >). 2. Αν το αποτέλεσμα είναι Error τότε απορρίπτεται, διαφορετικά γίνεται δεκτή. Γνωρίζουμε όμως ότι δεν υπάρχει ΜΤ, που να αποφασίζει την H και άρα καταλήγουμε σε άτοπο. Επομένως δε μπορεί να υπάρχει η ΜΤ M steps και επομένως η steps δεν είναι υπολογίσιμη. Η συνάρτηση steps του Παραδείγματος 8.2 δεν είναι υπολογίσιμη, αλλά είναι τουλάχιστο μερικώς υπολογίσιμη. Υπάρχουν όμως και συναρτήσεις, που δεν είναι ούτε καν μερικώς υπολογίσιμες. Θεώρημα 8.1 (Μη υπολογίσιμες συναρτήσεις) Υπάρχουν συναρτήσεις, που δεν είναι μερικώς υπολογίσιμες. Η απόδειξη του Θεωρήματος 8.1 παραλείπεται. Είναι σαφές ότι έχουμε μία αντιστοιχία μεταξύ τριών διαφορετικών κλάσεων γλωσσών, που είναι οι D, SD/D και SD, με τρεις διακριτές κλάσεις υπολογισιμότητας συναρτήσεων, τις υπολογίσιμες, τις μερικώς υπολογίσιμες και τις μη υπολογίσιμες συναρτήσεις. Στο Παράδειγμα 8.3 εντάσσουμε ενδεικτικά προβλήματα, διατυπωμένα ως γλώσσες και συναρτήσεις, σε μία από τις προαναφερόμενες κλάσεις γλωσσών/συναρτήσεων. Παράδειγμα 8.3 (Γλώσσες και υπολογισιμότητα συναρτήσεων) Εξετάζουμε τρία ενδεικτικά προβλήματα και τα διατυπώνουμε με περιγραφή γλώσσας και συνάρτησης. Καθένα από τα προβλήματα, που εξετάζουμε, αντιστοιχεί σε γλώσσα/συνάρτηση διαφορετικής κλάσης. 1. Πρόβλημα:

248 ΚΕΦ ΑΛΑΙΟ 8. ΥΠΟΛΟΓΙΣΙΜΕΣ ΣΥΝΑΡΤΗΣΕΙΣ Δοθέντων τριών φυσικών αριθμών x, y και z ισχύει z = x y; Γλώσσα στο D (αποφασίσιμη): {< x > < y >=< z >: x, y, z {0,..., 9} + με x y = z} Συνάρτηση υπολογίσιμη: f : N N N, f(x, y) = x y 2. Πρόβλημα: Δοθείσης μιας ΜΤ M και μιας συμβολοσειράς w, τερματίζει η M σε n βήματα; Γλώσσα στο SD/D (ημιαποφασίσιμη, αλλά όχι αποφασίσιμη): {< M, w, n >: η ΜΤ M τερματίζει για την w σε n βήματα} Συνάρτηση μερικώς υπολογίσιμη: f : {< M, w >} N, f(< M, w >) = αν η ΜΤ M τερματίζει για την w, τότε αριθμός βημάτων της M πριν τερματίσει αλλιώς δεν ορίζεται 3. Πρόβλημα: Δοθείσης μιας ΜΤ M, τερματίζει η M για όλες τις συμβολοσειρές σε όχι περισσότερα από n βήματα; Γλώσσα στο SD (όχι ημιαποφασίσιμη): {< M, n >: η ΜΤ M τερματίζει για κάθε στοιχείο του Σ σε όχι περισσότερα από n βήματα} Συνάρτηση όχι (μερικώς) υπολογίσιμη: f : {< M >} N, f(< M >) = αν η M τερματίζει για όλες τις συμβολοσειρές, τότε μέγιστος αριθμός βημάτων της M πριν τερματίσει αλλιώς δεν ορίζεται

8.2. ΘΕΩΡ ΙΑ ΑΝΑΔΡΟΜΙΚ ΩΝ ΣΥΝΑΡΤ ΗΣΕΩΝ 249 8.2 Θεωρία Αναδρομικών Συναρτήσεων Οι οικογένειες των γλωσσών και συναρτήσεων, που εξετάσαμε, μπορεί να αναφέρονται σε μέρος της σχετικής βιβλιογραφίας με διαφορετικές επωνυμίες και πιο συγκεκριμένα ως εξής: αναδρομικές γλώσσες αντί για αποφασίσιμες αναδρομικά απαριθμήσιμες γλώσσες αντί για ημιαποφασίσιμες μερικώς αναδρομικές συναρτήσεις αντί για μερικώς υπολογίσιμες αναδρομικές συναρτήσεις αντί για υπολογίσιμες Στην ενότητα αυτή υιοθετούμε τους όρους «μερικώς αναδρομικές» και «αναδρομικές» συναρτήσεις προκειμένου η παρουσίαση να είναι συμβατή με την επικρατούσα ορολογία για το συγκεκριμένο αντικείμενο. Αναδρομική συνάρτηση είναι μία συνάρτηση, που υπολογίζεται από μία ΜΤ, που τερματίζει για όλες τις εισόδους της. Μερικώς αναδρομική συνάρτηση είναι μία συνάρτηση, που μπορεί να υπολογίζεται από κάποια ΜΤ, αλλά μπορεί να πέφτει σε αέναη επανάληψη, αν υπάρχουν είσοδοι για τις οποίες η συνάρτηση δεν ορίζεται. Εχουμε επομένως ορίσει δύο σημαντικές κλάσεις συναρτήσεων με βάση ένα συγκεκριμένο υπολογιστικό πλαίσιο, τις ΜΤ. Στην ενότητα αυτή προσεγγίζουμε το ίδιο πρόβλημα από μία άλλη οπτική γωνία: μπορούμε να ορίσουμε τις ίδιες κλάσεις συναρτήσεων ανεξάρτητα α- πό ένα μοντέλο υπολογισμού, αλλά στηριζόμενοι σε καθιερωμένα μαθηματικά εργαλεία; Θα μπορούσαμε δηλαδή να έχουμε τον ορισμό ενός μικρού συνόλου αρχέγονων συναρτήσεων, μαζί με τη δυνατότητα να δημιουργούμε νέες συναρτήσεις χρησιμοποιώντας τις πράξεις της σύνθεσης και της αναδρομής; Πράγματι κάτι τέτοιο είναι εφικτό. Θα δούμε στη συνέχεια το πώς ορίζεται μία συγκεκριμένη κλάση συναρτήσεων, για την οποία προκύπτει ότι δοθείσας μιας κατάλληλης κωδικοποίησης αντιστοιχεί τελικά στην κλάση των αναδρομικών συναρτήσεων. Επειδή ακριβώς αυτή η θεωρία έχει αναπτυχθεί ανεξάρτητα από ένα μοντέλο υπολογισμού, για αυτό το λόγο έχουμε την ύπαρξη μια παράλληλης ορολογίας για τις ίδιες κλάσεις συναρτήσεων. Στο πλαίσιο αυτής της θεωρίας, το πεδίο ορισμό της κάθε συνάρτηση είναι μία διατεταγμένη n-άδα φυσικών αριθμών και το πεδίο τιμών είναι το σύνολο των φυσικών αριθμών. Καθώς οι αριθμοί μπορούν να αναπαρασταθούν από συμβολοσειρές και οι συμβολοσειρές μπορούν να αναπαρασταθούν από αριθμούς, δεν υπάρχει κάποια θεμελιώδης ασυμβατότητα μεταξύ της θεωρίας, στην οποία θα αναφερθούμε και της θεωρίας των ΜΤ, που επεξεργάζονται συμβολοσειρές.

250 ΚΕΦ ΑΛΑΙΟ 8. ΥΠΟΛΟΓΙΣΙΜΕΣ ΣΥΝΑΡΤΗΣΕΙΣ 8.2.1 Στοιχειώδεις αναδρομικές συναρτήσεις Ορισμός 8.3 (Αρχέγονες συναρτήσεις) Ορίζουμε ως αρχέγονες ή αρχικές τις παρακάτω συναρτήσεις από το N... N στο N: τις σταθερές συναρτήσεις: για k 1 και a 0, Ca k (X) = a για κάθε X Nk τη συνάρτηση succ : N N: succ(n) = n + 1 την οικογένεια των συναρτήσεων προβολής: για 0 < j k, p k j (x 1, x 2,..., x k ) = x j Ορισμός 8.4 (Πράξεις μεταξύ συναρτήσεων) Ορίζουμε τις παρακάτω πράξεις μεταξύ συναρτήσεων: σύνθεση της f : N k N με τις g 1, g 2,..., g k : N m N: h(x) = f(g 1 (X),..., g k (X)) για κάθε X N m στοιχειώδη αναδρομή της f : N n+1 N ως προς τις g : N n N και h : N n+2 N, για n 0 (μηδέν μεταβλητές έχει η σταθερή συνάρτηση), που ορίζεται από τους τύπους: f(x, 0) = g(x) για κάθε X N n και κάθε k 0. f(x, k + 1) = h(x, k, f(x, k)) Ορισμός 8.5 (Στοιχειώδεις αναδρομικές συναρτήσεις) Το σύνολο των στοιχειωδών αναδρομικών συναρτήσεων ορίζεται ως εξής: 1. Ολες οι αρχέγονες συναρτήσεις είναι στοιχεία του. 2. Για κάθε k 0 και m 0, αν f : N k N και g 1,..., g k : N m N είναι στοιχεία του συνόλου, τότε η συνάρτηση f(g 1, g 2,..., g k ), που λαμβάνεται από τη σύνθεση της f με τις g 1,..., g k είναι επίσης ένα στοιχείο του συνόλου.

8.2. ΘΕΩΡΙΑ ΑΝΑΔΡΟΜΙΚΩΝ ΣΥΝΑΡΤΗΣΕΩΝ 251 3. Για κάθε n 0 και κάθε συνάρτηση g : N n N και h : N n+2 N του συνόλου των στοιχειωδών αναδρομικών συναρτήσεων, η συνάρτηση f : N n+1 N, που ορίζεται ως προς τις g και h με στοιχειώδη αναδρομή ανήκει επίσης στο σύνολο των στοιχειωδών αναδρομικών συναρτήσεων. Με άλλα λόγια, το σύνολο των στοιχειωδών αναδρομικών συναρτήσεων είναι το μικρότερο σύνολο συναρτήσεων, που περιέχει τις αρχέγονες συναρτήσεις και είναι κλειστό ως προς τις πράξεις της σύνθεσης και της στοιχειώδους αναδρομής. Γενικά, μπορούμε να δείξουμε ότι μία συνάρτηση f είναι στοιχειώδης αναδρομική διατυπώνοντας μία παραγωγή στοιχειώδους αναδρομής: ακολουθία από συναρτήσεις f 0, f 1,... f j τέτοια ώστε f j = f και κάθε f i στην ακολουθία, είτε είναι αρχέγονη, είτε παράγεται από τις προηγούμενες συναρτήσεις της ακολουθίας με σύνθεση ή στοιχειώδη αναδρομή. Παράδειγμα 8.4 (Αριθμητική με στοιχειώδεις αναδρομικές συναρτήσεις) Οι συναρτήσεις Add : N 2 N και Mult : N 2 N ορίζονται από τους παρακάτω τύπους: Add(x, y) = x + y Mult(x, y) = x y Τόσο για την Add, όσο και για την Mult μπορούμε να έχουμε μία παραγωγή εργαζόμενοι αντίστροφα με σκοπό να βρίσκουμε απλούστερες συναρτήσεις από τις οποίες μπορούμε να πάρουμε τη συνάρτηση, που μας ενδιαφέρει με στοιχειώδη αναδρομή. Add(x, 0) = p 1 1 (x) = x Add(x, k + 1) = (x + k) + 1 = succ(add(x, k)) = succ(p 3 3 (x, k, Add(x, k))) Επομένως, μία παραγωγή στοιχειώδους αναδρομής για την Add σχηματίζεται από τις τρεις αρχέγονες συναρτήσεις p 1 1, succ και p3 3, καθώς και μία συνάρτηση f 3, που λαμβάνεται ως σύνθεση των succ και p 3 3, και της Add, που προκύπτει από τις p 1 1 και f 3 με στοιχειώδη αναδρομή. Σχετικά με τη συνάρτηση M ult, έχουμε: Mult(x, 0) = Mult(x, k + 1) = 0 = C0 1(x) x k + x = Add(x, Mult(x, k)) Στην τελευταία έκφραση, το πρώτο από τα ορίσματα της συνάρτησης προκύπτει ως p 3 1 (x, k, Mult(x, k)) και το δεύτερο ως p3 3 (x, k, Mult(x, k)). Χρησιμοποιώντας λοιπόν αυτή την προσέγγιση, ξεκινάμε με την παραγωγή της Add και συνεχίζουμε με την C0 1 και τη συνάρτηση f, που δίνεται ως σύνθεση

252 ΚΕΦ ΑΛΑΙΟ 8. ΥΠΟΛΟΓΙΣΙΜΕΣ ΣΥΝΑΡΤΗΣΕΙΣ της Add με τις p 3 1 και p3 3 και ολοκληρώνουμε με την Mult, που προκύπτει από τις C0 1 και f με στοιχειώδη αναδρομή. Είναι φανερό ότι οι αρχέγονες συναρτήσεις είναι υπολογίσιμες, καθώς επίσης και ότι το σύνολο των υπολογίσιμων συναρτήσεων είναι κλειστό ως προς τις πράξεις της σύνθεσης και της στοιχειώδους αναδρομής. Αυτό συμβαίνει, επειδή μπορούμε να κατασκευάσουμε ΜΤ, οι οποίες υπολογίζουν τις συναρτήσεις, που προκύπτουν από αυτές τις πράξεις, υπό τη προϋπόθεση βέβαια ότι ξεκινάμε με υπολογίσιμες συναρτήσεις. Οι αλγόριθμοι δεν παρουσιάζουν κάποια δυσκολία στην κατασκευή και για αυτό καταλήγουμε στο παρακάτω αποτέλεσμα, ως συνέπεια της θέσης των Church-Turing: Θεώρημα 8.2 (Υπολογισιμότητα στοιχ. αναδρ. συναρτήσεων) Κάθε στοιχειώδης αναδρομική συνάρτηση είναι πλήρης και υπολογίσιμη. Εχει επίσης αποδειχθεί με διαγωνιοποίηση [1], [2] ότι δεν είναι όλες οι πλήρεις και υπολογίσιμες συναρτήσεις στοιχειώδεις αναδρομικές. 8.2.2 µ-αναδρομικές συναρτήσεις Αφού λοιπόν υπάρχουν υπολογίσιμες συναρτήσεις, που δεν είναι στοιχειώδεις αναδρομικές, επιβάλλεται να συνεχίσουμε την προσπάθεια για να ορίσουμε α- κριβώς εκείνες τις συναρτήσεις, που υπολογίζονται από τις ΜΤ. Θα επικεντρωθούμε σε μία άλλη οικογένεια συναρτήσεων, που ορίζονται χρησιμοποιώντας τις ίδιες βασικές συναρτήσεις, που χρησιμοποιήσαμε για να ορίσουμε τις στοιχειώδεις αναδρομικές. Η σύνθεση και η στοιχειώδης αναδρομή εξακολουθούν να συμπεριλαμβάνονται στις πράξεις, που επιτρέπονται, αλλά αυτή τη φορά θα έχουμε στη διάθεσή μας και ένα νέο τρόπο για να δημιουργούμε συναρτήσεις, την ελαχιστοποίηση. Ορισμός 8.6 (Ελαχιστοποίηση συνάρτησης) Η ελαχιστοποίηση μιας συνάρτησης f : N k+1 N δίνεται από τη συνάρτηση min f : N k N, που ορίζεται, όπως παρακάτω: min f (X) = z def f(z, X) = 0 και f(i, X) > 0 για i = 0,..., z 1 Διαισθητικά, η ελαχιστοποίηση αναζητά, ξεκινώντας από το 0 αυξητικά, το μικρότερο όρισμα της συνάρτησης, για το οποίο επιστρέφεται η τιμή 0. Αν δεν

8.2. ΘΕΩΡΙΑ ΑΝΑΔΡΟΜΙΚΩΝ ΣΥΝΑΡΤΗΣΕΩΝ 253 υπάρχει τέτοιο όρισμα, τότε η αναζήτηση δεν τερματίζει ποτέ! Αν λοιπόν η f είναι υπολογίσιμη, τότε μπορούμε να κατασκευάσουμε μία ΜΤ M minf, για τον υπολογισμό της min f, που θα λειτουργεί ως εξής: M minf (X) = 1. i = 0. 2. while f(i, X) > 0 do: i = i + 1. 3. return i. Το πρόβλημα είναι ότι αν δεν υπάρχει κατάλληλο i, η M minf δε θα τερματίσει ποτέ. Για να μείνουμε προσηλωμένοι στο στόχο μας, που είναι η ανάπτυξη μιας θεωρίας για υπολογίσιμες συναρτήσεις, θα επικεντρωθούμε σε μία κλάση συναρτήσεων, για την οποία η M minf τερματίζει πάντα: μία συνάρτηση f λέμε ότι είναι ελαχιστοποιήσιμη, αν και μόνο αν για κάθε X N k υπάρχει ένα z, τέτοιο ώστε f(z, X) = 0. Ορισμός 8.7 (µ-αναδρομικές συναρτήσεις) Ορίσουμε το σύνολο των µ-αναδρομικών συναρτήσεων να είναι το μικρότερο σύνολο συναρτήσεων από το N k στο N, που περιλαμβάνει τις αρχέγονες συναρτήσεις του Ορισμού 8.5 και είναι κλειστός ως προς: τη σύνθεση συναρτήσεων, τη στοιχειώδη αναδρομή και την ελαχιστοποίηση συναρτήσεων ελαχιστοποιήσιμων. Η διαφορά μεταξύ των στοιχειωδών αναδρομικών συναρτήσεων και των µ- αναδρομικών συναρτήσεων είναι διαισθητικά η εξής: Η επανάληψη στον υπολογισμό μιας στοιχειώδους αναδρομικής συνάρτησης είναι πάντα φραγμένη. Ενας τέτοιος υπολογισμός μπορεί να υ- λοποιηθεί με ένα βρόχο for, που θα εκτελείται για x k βήματα, όπου x k είναι η τιμή του τελευταίου ορίσματος της συνάρτησης. Ετσι, για να υπολογιστεί η Mult(2, 3) θα πρέπει να κληθεί η Add τρεις φορές (βλ. Παράδειγμα 8.4). Ο υπολογισμός μιας µ-αναδρομικής συνάρτησης απαιτεί την εκτέλεση ε- νός βρόχου for, όπως αυτός για τη ΜΤ M minf, για τον οποίο δεν υπάρχει εκ των προτέρων γνωστό φράγμα, που περιορίζει τον αριθμό των απαιτούμενων βημάτων.

254 ΚΕΦ ΑΛΑΙΟ 8. ΥΠΟΛΟΓΙΣΙΜΕΣ ΣΥΝΑΡΤΗΣΕΙΣ Θεώρημα 8.3 (Ισοδυναμία µ-αναδρομής και υπολογισιμότητας) Μία συνάρτηση είναι µ-αναδρομική αν και μόνο αν είναι υπολογίσιμη. Απόδειξη: Πρέπει να αποδείξουμε και τις δύο κατευθύνσεις: Κάθε µ-αναδρομική συνάρτηση είναι υπολογίσιμη. Για να αποδειχθεί αυτό θα πρέπει να κατασκευαστούν ΜΤ για κάθε μία από τις αρχέγονες συναρτήσεις και τις πράξεις των µ-αναδρομικών συναρτήσεων. Κάθε υπολογίσιμη συνάρτηση είναι µ-αναδρομική. Για να αποδειχθεί αυτό θα πρέπει να κατασκευαστούν µ-αναδρομικές συναρτήσεις, που θα μπορούν να εκτελέσουν την κάθε μία από τις λειτουργίες, που εκτελεί μία ΜΤ. Στο σημείο αυτό, παραλείπουμε τις λεπτομέρειες της απόδειξης, που δεν παρουσιάζει κάποια ιδιαίτερη δυσκολία. Οι μερικές µ-αναδρομικές συναρτήσεις ορίζονται, όπως και οι µ- αναδρομικές συναρτήσεις στον Ορισμό 8.7, χωρίς όμως να γίνεται διάκριση στις συναρτήσεις για τις οποίες εφαρμόζεται η πράξη της ελαχιστοποίησης. Θεώρημα 8.4 (Μερικώς µ-αναδρ. συναρτήσες και υπ/μότητα) Μία συνάρτηση είναι μερικώς µ-αναδρομική, αν και μόνο αν είναι μερικώς υπολογίσιμη. 8.3 Θεώρημα Αναδρομής/Σταθερού Σημείου Στην ενότητα αυτή θα μας απασχολήσει το θεμελιώδες ερώτημα του κατά πόσο ένα πρόγραμμα μπορεί να γνωρίζει τον εαυτό του. Το πρόβλημα αυτό είναι γνωστό στους προγραμματιστές ως ανάκλαση (reflection) και μία από τις εφαρμογές του είναι η σχεδίαση ιών. Οι ιοί είναι προγράμματα, που αντιγράφουν τον εαυτό τους, εγγράφουν δηλαδή μία εικόνα του εκτελέσιμου κώδικά τους από έναν υπολογιστή σε ένα άλλο. Για να αντιληφθούμε πιο εύκολα το πρόβλημα, ας θεωρήσουμε την απλή περίπτωση ενός προγράμματος, που πρέπει να εκτυπώσει ένα αντίγραφο του εαυτού του. Τα προγράμματα, που εκτυπώνουν τον εαυτό τους είναι γνωστά με τον όρο quines, προς τιμή του σημαντικού φιλοσόφου και επιστήμονα της Λογικής Willard Van Orman Quine. Μία άμεση προσέγγιση θα ήταν να έχουμε μία μεταβλητή δείκτη στη διεύθυνση του πρώτου byte από τον κώδικα του προγράμματος και στη συνέχεια

8.3. ΘΕΩΡΗΜΑ ΑΝΑΔΡΟΜΗΣ/ΣΤΑΘΕΡΟΥ ΣΗΜΕΙΟΥ 255 να μετακινείται ο δείκτης με ένα επαναληπτικό βρόχο, διατρέχοντας και τυπώνοντας τα περιεχόμενα των διευθύνσεων, στις οποίες είναι αποθηκευμένος ο κώδικας. Αν και αυτή προσέγγιση ακούγεται εφικτή, μπορεί εύκολα να αντιμετωπιστεί. Τα λειτουργικά συστήματα καταγράφουν πληροφορίες για το αν μία περιοχή μνήμης είναι εκτελέσιμη ή αν είναι μνήμη ανάγνωσης/εγγραφής. Ετσι, σε μία περιοχή της μνήμης μπορούμε είτε να έχουμε ένα εκτελέσιμο πρόγραμμα, είτε εκεί να υπάρχουν δεδομένα. Για να εμποδιστεί λοιπόν ένα πρόγραμμα ιού από το να διαβάσει τον εαυτό του, θα μπορούσε η περιοχή του κώδικα του να χρησιμοποιείται αποκλειστικά ως εκτελέσιμη περιοχή. Με αυτό τον τρόπο, απαγορεύεται η εκτέλεση εντολών, που προσπελαύνουν μία περιοχή του προγράμματος, για να ανακτήσουν τα περιεχόμενα της ως δεδομένα, που στη συνέχεια μπορεί να αντιγράφονται. Ετσι, είναι δυνατό τα προγράμματα να εμποδιστούν από το να διαβάσουν τα bytes του κώδικα τους. Τίθεται λοιπόν το ερώτημα, αν οι ιοί των υπολογιστών μπορούν να προσπελαύνουν τον εκτελέσιμο κώδικά τους με άλλο τρόπο. Η απάντηση στο ερώτημα είναι καταφατική και οδηγεί σε μία εφαρμογή του Θεωρήματος της Αναδρομής, που θα εξηγήσουμε στη συνέχεια. Ας ξεκινήσουμε την προσπάθεια να γράψουμε ένα quine για το πολύ απλό πρόγραμμα: PRINT Hello Θέλουμε δηλαδή ένα πρόγραμμα, που θα εκτυπώνει το παραπάνω πρόγραμμα. Ας εξετάσουμε την εξής λύση: PRINT PRINT Hello Αυτό όμως δεν είναι ένα quine, γιατί δεν εκτυπώνει τον εαυτό του, αλλά είναι ένα πρόγραμμα μεγαλύτερο από το αρχικό πρόγραμμα. Είναι λοιπόν σαφές ότι με μία επιπλέον PRINT, τελικά παίρνουμε ένα διαφορετικό πρόγραμμα από αυτό που θέλουμε να εκτυπώσουμε και αυτό δεν είναι ένα quine. Ας δούμε λοιπόν τα βήματα μιας διαφορετικής προσέγγισης, που οδηγεί στο επιθυμητό αποτέλεσμα. Χρειαζόμαστε ένα πρόγραμμα, που θα αποτελείται από μία εντολή εκχώρησης και μία εντολή PRINT: x... PRINT x που στη συνέχεια θα δούμε ποια είναι η συμβολοσειρά, που πρέπει να εκχωρηθεί ως τιμή στη μεταβλητή x. Ενα quine για αυτό το πρόγραμμα θα είχε τη μορφή:

256 ΚΕΦ ΑΛΑΙΟ 8. ΥΠΟΛΟΓΙΣΙΜΕΣ ΣΥΝΑΡΤΗΣΕΙΣ x... PRINT x PRINT x PRINT PRINT x όπου οι τρεις πρώτες PRINT τυπώνουν την εντολή εκχώρησης, δηλαδή ένα μέρος του προγράμματος και η τελευταία PRINT τυπώνει την τιμή της x, που μέχρι στιγμής δεν έχουμε ορίσει. Το πρόγραμμα αυτό θα τυπώνει τον εαυτό του, μόνο αν η τιμή της μεταβλητής x είναι η συμβολοσειρά, που αποτελείται από τις τέσσερις εντολές PRINT. Αν λοιπόν στην εντολή εκχώρησης γράψουμε στη θέση των... τις τέσσερις εντολές PRINT, τότε θα έχουμε ένα quine. Ας εξετάσουμε τώρα το πρόβλημα της σχεδίασης μιας ΜΤ quine. Ονομάζουμε P w μία απλή ΜΤ, που απλά τυπώνει τη συμβολοσειρά w Σ στην ταινία της και συμβολίζουμε με < P w > μία κωδικοποίηση της P w ως συμβολοσειρά. Η σχεδίαση της P w είναι εύκολη: αν η w έχει μήκος n, τότε αρκεί μία ακολουθία από n μεταβάσεις, που η κάθε μία εγγράφει στην ταινία το αντίστοιχο σύμβολο της w. Η τελευταία κατάσταση θα πρέπει να είναι τελική. Κατά συνέπεια, η συνάρτηση g : Σ Σ με g(w) =< P w >, που για δοθείσα συμβολοσειρά w, επιστρέφει ως αποτέλεσμα μία κωδικοποίηση < P w > της ΜΤ P w είναι μία υπολογίσιμη συνάρτηση. Η ΜΤ quine θα λειτουργεί σε δύο βήματα. Στο πρώτο βήμα εκτελείται ο υπολογισμός g(x) εγγράφοντας πάνω στην ταινία τη συμβολοσειρά x, όπου x είναι η κωδικοποίηση της ΜΤ, που εφαρμόζεται στο δεύτερο βήμα. Οταν αρχίζει η εκτέλεση του δεύτερου βήματος, υπάρχει ήδη πάνω στην ταινία η συμβολοσειρά x, που αντιγράφεται στις θέσεις της ταινίας δεξιά από την x. Στη συνέχεια καλείται η g(x), που εγγράφει στη θέση της πρώτης x την κωδικοποίηση της ΜΤ του πρώτου βήματος, δηλαδή της ΜΤ που εγγράφει x στην ταινία. Τελικά ποια πρέπει να είναι η συμβολοσειρά x, για να λειτουργεί η περιγραφείσα ΜΤ ως ένα quine; Η απάντηση είναι εύκολη: η x θα είναι η κωδικοποίηση της ΜΤ του δεύτερου βήματος. Ετσι, ως αποτέλεσμα του υπολογισμού, που περιγράψαμε, θα έχουμε πάνω στην ταινία στο αριστερό μέρος την κωδικοποίηση της ΜΤ του πρώτου βήματος και ακριβώς στα δεξιά την κωδικοποίηση της ΜΤ του δεύτερου βήματος. Θα έχουμε δηλαδή μία ΜΤ, που λειτουργεί σε δύο βήματα, εγγράφοντας πάνω στην ταινία την κωδικοποίηση του εαυτού της. Μία ΜΤ που γνωρίζει τον εαυτό της, όπως το quine που περιγράψαμε, μπορεί να χρησιμοποιηθεί για προβλήματα όπως: Καταμέτρηση του αριθμού των καταστάσεων της ΜΤ. Ελεγχος του αν η τελική κατάσταση προσεγγίζεται από την αρχική κα-

8.3. ΘΕΩΡΗΜΑ ΑΝΑΔΡΟΜΗΣ/ΣΤΑΘΕΡΟΥ ΣΗΜΕΙΟΥ 257 τάσταση της ΜΤ. Ελεγχος του αν η ΜΤ αποδέχεται μία συμβολοσειρά w. Το τελευταίο πρόβλημα είναι μη αποφασίσιμο και για αυτό χρειάζεται προσοχή στην προσομοίωση μιας τέτοιας ΜΤ. Θα μπορούσαμε βέβαια να διατυπώσουμε και πολλά άλλα προβλήματα, αλλά σε όλες τις περιπτώσεις χρειάζεται ο υπολογισμός μιας συνάρτησης της μορφής: t(< M >, w) και επομένως η σχεδίαση μιας ΜΤ, που θα δέχεται ως είσοδο την κωδικοποίηση μιας ΜΤ M και ενδεχομένως επιπλέον πληροφορίες, όπως για παράδειγμα μία συμβολοσειρά w. Αν υπήρχε μία τέτοια ΜΤ, τότε θα μπορούσαμε να περάσουμε ως είσοδο σε αυτή τη μηχανή την κωδικοποίηση του εαυτού της, για να υπολογιστεί η: t(< t >, w) και να δοθεί λύση σε κάποιο πρόβλημα, όπως αυτά που αναφέραμε. Υπάρχει περίπτωση να επιτευχθεί αυτό με άλλο τρόπο, χωρίς να χρειαστεί η ΜΤ να δεχθεί ως είσοδο μία κωδικοποίηση του εαυτού της; Η απάντηση είναι καταφατική και δίνεται από το Θεώρημα της Αναδρομής, που στην ουσία μας λέει ότι αν υπάρχει μία ΜΤ για τη συνάρτηση t, τότε θα υπάρχει και μία άλλη ΜΤ, που κάνει ότι και η t, αλλά υπολογίζει την κωδικοποίηση του εαυτού της αντί απλά να δέχεται την κωδικοποίηση ως είσοδο. Θεώρημα 8.5 (Θεώρημα της Αναδρομής) Εστω μία ΜΤ T, που υπολογίζει μία συνάρτηση t : Σ Σ Σ. Για κάθε τέτοια ΜΤ υπάρχει μία άλλη ΜΤ R, που κάνει ότι ακριβώς κάνει η t, όταν αυτή εφαρμόζεται σε μία κωδικοποίηση του εαυτού της. Η νέα αυτή ΜΤ, έστω R θα υπολογίζει τη συνάρτηση r : Σ Σ : για οποιοδήποτε w Σ. r(w) = t(< R >, w) Παραλείπουμε την απόδειξη του Θεωρήματος της Αναδρομής και εστιάζουμε σε μια σημαντική συνέπεια, που αυτό έχει. Στο Παράδειγμα 8.2 χρησιμοποιήσαμε ψευδογλώσσα για την περιγραφή ΜΤ και αυτό είναι μία πρακτική, που η εγκυρότητά της τεκμηριώθηκε ως συνέπεια του Θεωρήματος 6.4 περί προσομοίωσης υπολογιστή με ΜΤ. Αυτό λοιπόν που μας λέει το Θεώρημα της Αναδρομής

258 ΚΕΦ ΑΛΑΙΟ 8. ΥΠΟΛΟΓΙΣΙΜΕΣ ΣΥΝΑΡΤΗΣΕΙΣ είναι ότι στον ψευδοκώδικα μιας ΜΤ μπορούμε βάσιμα να συμπεριλάβουμε μία εντολή < SELF >, η οποία θα επιστρέφει μία κωδικοποίηση της ίδιας ΜΤ ως συμβολοσειρά. Εφόσον λοιπόν υποστηρίζεται από την ψευδογλώσσα αυτή η δυνατότητα, το πρόγραμμα quine, που μελετήσαμε θα μπορούσε να γραφεί με τον εξής απλό τρόπο: x < SELF > PRINT x που σύμφωνα με το Θεώρημα της Αναδρομής είναι μία καθόλα έγκυρη περιγραφή ΜΤ. Στην Ενότητα 8.4 θα δούμε μία ενδιαφέρουσα εφαρμογή της εντολής < SELF > στην απόδειξη της μη αποφασισιμότητας ενός ποβλήματος για ΜΤ. Το Θεώρημα της Αναδρομής έχει διατυπωθεί επίσης και σε μία άλλη μορφή, που αναφέρεται σε σταθερό σημείο μιας συνάρτησης. Ορισμός 8.8 (Σταθερό σημείο συνάρτησης) Ενα σταθερό σημείο για μία συνάρτηση είναι κάποια τιμή, που παραμένει αμετάβλητη όταν έχουμε επαναλαμβανόμενη εφαρμογή της συνάρτησης για την τιμή αυτή. Παράδειγμα 8.5 (Σταθερό σημείο συνάρτησης) Θεωρήστε τη συνάρτηση f, που ορίζεται από τον πίνακα: x 1 2 3 4 5 6 f(x) 5 4 6 4 2 4 και απεικονίζεται στο γράφο του Σχήματος 8.1. 6 1 5 2 4 3 Σχήμα 8.1: Συνάρτηση με σταθερό σημείο Η τιμή 4 είναι ένα σταθερό σημείο της συνάρτησης f.

8.4. ΕΦΑΡΜΟΓ ΕΣ 259 Το Θεώρημα Αναδρομής Σταθερού Σημείου αναφέρεται σε υπολογίσιμες συναρτήσεις, που ορίζονται και παίρνουν τιμές στο σύνολο των συμβολοσειρών, που κωδικοποιούν ΜΤ. Κάθε συνάρτηση της οποίας το πεδίο ορισμού και το πεδίο τιμών είναι το ίδιο σύνολο λέγεται μετασχηματισμός. Το θεώρημα λέει ότι για οποιονδήποτε μετασχηματισμό κωδικοποιήσεων ΜΤ υπάρχει πάντα μία ΜΤ, που παραμένει αναλλοίωτη από το μετασχηματισμό. Θεώρημα 8.6 (Θεώρημα Αναδρομής Σταθερού Σημείου) Εστω μία ΜΤ T, που υπολογίζει μία συνάρτηση t : Σ Σ Σ. Υπάρχει μία κατάλληλη ΜΤ F, τέτοια ώστε η t(< F >) να είναι ισοδύναμη με την F. 8.4 Εφαρμογές Ως εφαρμογή του Θεωρήματος 8.5 της Αναδρομής θα αποδείξουμε ότι η γλώσσα: MT acc = {< M, w > η M είναι μία ΜΤ που αποδέχεται την w} είναι μη αποφασίσιμη. Η απόδειξη γίνεται με εις άτοπο απαγωγή. Ας υποθέσουμε ότι υπάρχει μία ΜΤ, έστω H, που αποφασίζει τη γλώσσα MT acc. Τότε θα μπορούσαμε να ορίσουμε τη ΜΤ B, που για μία είσοδο w λειτουργεί ως εξής: B = 1. x < SELF >. 2. Εκτέλεσε την H για είσοδο x, w ως εξής: Αν η H αποδέχεται, τότε η w απορρίπτεται. Αν η H απορρίπτει, τότε η w γίνεται δεκτή. Με άλλα λόγια, ορίσαμε την B έτσι ώστε για είσοδο w να κάνει το αντίθετο από αυτό, που λέει η H ότι κάνει η B. Εκμεταλλευόμενοι λοιπόν το Θεώρημα της Αναδρομής φτάσαμε σε ένα άτοπο, που σημαίνει ότι δεν υπάρχει ΜΤ H, που αποφασίζει την MT acc.

260 ΚΕΦ ΑΛΑΙΟ 8. ΥΠΟΛΟΓΙΣΙΜΕΣ ΣΥΝΑΡΤΗΣΕΙΣ Βιβλιογραφία - Αναφορές [1] Harry R. Lewis and Christos H. Papadimitriou. Στοιχεία Θεωρίας Υπολογισμού. Εκδόσεις Κριτική, 2005. [2] Elaine A. Rich. Automata Theory and Applications. Prentice-Hall, Inc., Upper Saddle River, NJ, USA, 2007. ISBN 0132288060.