Difference between revisions of "Υπολογιστική Πολυπλοκότητα"
m (Protected "Υπολογιστική Πολυπλοκότητα" ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)) [cascading]) |
m (Changed protection level for "Υπολογιστική Πολυπλοκότητα" ([Edit=Allow only autoconfirmed users] (indefinite) [Move=Allow only administrators] (indefinite))) |
(No difference)
|
Latest revision as of 13:55, 24 January 2017
Contents
- 1 Υπολογιστική Πολυπλοκότητα
- 1.1 Προβλήματα και Αλγόριθμοι
- 1.2 Μηχανή Turing
- 1.3 Αναδρομικές και αναδρομικά αριθμήσιμες γλώσσες
- 1.4 Παραλλαγές της μηχανής Turing
- 1.5 H μη ντετερμινιστική μηχανή Turing
- 1.6 H αρχή της διαγωνοποίησης
- 1.7 Επιλύσιμα και μη επίλυσιμα προβλήματα
- 1.8 Το πρόβλημα του τερματισμού
- 1.9 Μη αποκρισιμότητα
- 1.10 Αναδρομικά μη διαχωρίσιμες γλώσσες
- 1.11 Κλάσεις πολυπλοκότητας
- 1.12 Στοιχεία από τη Λογική
- 1.13 Προβλήματα στη κλάση ΝΡ
- 1.14 Πληρότητα κατά ΝΡ
- 1.15 ΝΡ-πλήρη προβλήματα
- 1.16 Το συμπλήρωμα της κλάσης ΝΡ
- 1.17 Βιβλιογραφικές Πηγές
Υπολογιστική Πολυπλοκότητα
Προβλήματα και Αλγόριθμοι
Για την καλύτερη κατανόηση των εννοιών υπολογιστικό πρόβλημα, αλγόριθμος, μέγεθος προβλήματος, πολυπλοκότητα, κ.ά., θα παρουσιάσουμε έναν αλγόριθμο για την επίλυση του προβλήματος της ΠΡΟΣΠΕΛΑΣΙΜΟΤΗΤΑΣ (REACHABILITY) ή διαφορετικά, του προβλήματος του ΜΟΝΟΠΑΤΙΟΥ (PATH). Στην Θεωρία Πολυπλοκότητας αντιμετωπίζουμε τα υπολογιστικά προβλήματα όχι μόνο σαν προβλήματα προς λύση αλλά και σαν μαθηματικά αντικείμενα. Για το λόγο αυτό, απ' εδώ και στο εξής, θα αναφερόμαστε σε αυτά γράφοντας το όνομα τους με ΚΕΦΑΛΑΙΟΥΣ χαρακτήρες.
Το πρόβλημα της ΠΡΟΣΠΕΛΑΣΙΜΟΤΗΤΑΣ ορίζεται ως εξής:
Δοθέντος ενός κατευθυντικού γραφήματος και δύο κόμβων
και
του
, υπάρχει μονοπάτι από τον κόμβο
στον κόμβο
;
Στο σχήμα που ακολουθεί παρουσιάζουμε ένα στιγμιότυπο του προβλήματος. Πρόκειται για ένα
γράφημα με σύνολο κόμβων
και σύνολο
ακμών
, ενώ
και
. Δοθέντος του γραφήματος
, ζητάμε απάντηση στο ερώτημα αν
υπάρχει μονοπάτι από τον κόμβο
στον κόμβο
. Είναι εύκολο να διαπιστώσει
κανείς ότι στο γράφημα αυτό πράγματι υπάρχει μονοπάτι από τον κόμβο
στον
κόμβο
, το
.
Ένας αλλός τρόπος για να διατυπώσουμε το πρόβλημα της ΠΡΟΣΠΕΛΑΣΙΜΟΤΗΤΑΣ (τον οποίο και θα χρησιμοποιούμε για την διατύπωση των υπολογιστικών προβλημάτων που θα μας απασχολήσουν) είναι ο εξής:
ΠΡΟΣΠΕΛΑΣΙΜΟΤΗΤΑ (REACHABILITY)
Στιγμιότυπο: | Κατευθυντικό γράφημα ![]() ![]() |
Ερώτηση: | Υπάρχει μονοπάτι από τον κόμβο ![]() ![]() |
Είναι εύκολο να δει κανείς ότι αν το πλήθος των κόμβων ενός κατευθυντικού
γραφήματος είναι ίσο με , τότε το πλήθος όλων των δυνατών ακμών που
μπορούν να ορισθούν είναι ίσο με
. ʼΑρα το πλήθος των κόμβων $n$
του δοθέντος γραφήματος προσδιορίζει το μέγεθος του προβλήματος.
Η ΠΡΟΣΠΕΛΑΣΙΜΟΤΗΤΑ είναι ένα πρόβλημα απόφανσης(decision
problem), δηλαδή ένα πρόβλημα στο οποία ζητείται απλά μια απάντηση "ΝΑΙ" ή
"ΟΧΙ". Έτσι, για έναν αλγόριθμο επίλυσης του προβλήματος αυτού αρκεί να
εξετάζει την ύπαρξη ή όχι μονοπατιού από τον κόμβο στον κόμβο
και να
απαντά "ΝΑΙ" ή "ΟΧΙ", αντίστοιχα, χωρίς να είναι απαραίτητο να δίνει στην
έξοδο του και το μονοπάτι στην περίπτωση που αυτό υπάρχει. Τα προβλήματα
απόφανσης παίζουν σημαντικό ρόλο στη Θεωρία της Υπολογιστικής Πολυπλοκότητας
και θα μας απασχολήσουν αρκετά στα επόμενα μαθήματα.
Ας δώσουμε τώρα μια άτυπη περιγραφή ενός αλγορίθμου επίλυσης του προβλήματος
της ΠΡΟΣΠΕΛΑΣΙΜΟΤΗΤΑΣ: Ο αλγόριθμος ουσιαστικά αναζητά το
πιθανό μονοπάτι από τον κόμβο στον κόμβο
. Η λειτουργία του αλγορίθμου
είναι η εξής: Καθ' όλη τη διάρκεια εκτέλεσης του αλγορίθμου, διατηρούμε ένα
σύνολο
από κόμβους. Αρχικά,
. Κάθε κόμβος του
γραφήματος μπορεί να είναι χρωματισμένος ή όχι. Ένας κόμβος αποκτά
χρώμα αν κάποια στιγμή κατά τη διάρκεια του υπολογισμού γίνει μέλος του
συνόλου
. Αρχικά μόνο ο κόμβος
είναι χρωματισμένος. Σε κάθε επανάληψη
του αλγορίθμου επιλέγουμε έναν κόμβο
και τον διαγράφουμε από το
. Στη συνέχεια, εξετάζουμε όλες τις ακμές
του γραφήματος. Αν ο
κόμβος
δεν έχει χρώμα, τότε τον χρωματίζουμε και τον εισάγουμε στο σύνολο
. Η διαδικασία επαναλαμβάνεται μέχρι το σύνολο
να μην περιέχει
κανέναν κόμβο. Τότε, αν ο κόμβος $t$ είναι χρωματισμένος ο αλγόριθμος απαντά
"ΝΑΙ" (δηλαδή, υπάρχει μονοπάτι από τον κόμβο
στον κόμβο
) ενώ
διαφορετικά απαντά "ΟΧΙ".
Αλγόριθμος 1 Αλγόριθμος επίλυσης της ΠΡΟΣΠΕΛΑΣΙΜΟΤΗΤΑΣ
repeat Πάρε έναν κόμβο.
for all
do if ο κόμβος
δεν είναι χρωματισμένος then
. {χρωμάτισε τον κόμβο
} end if end for until
if ο κόμβος
είναι χρωματισμένος then return NAI else return OXI end if
Τα βήματα του αλγορίθμου που περιγράψαμε δίνονται στον Αλγόριθμο
\ref{r_algorithm}. Είναι εύκολο να δεί κανείς ότι ο αλγόριθμος είναι ορθός
αφού ένας κόμβος λαμβάνει χρώμα αν και μόνο αν υπάρχει μονοπάτι από τον κομβο
σε αυτόν. Επίσης ο αλγόριθμος τερματίζει όταν το σύνολο
γίνει ίσο με
το κενό σύνολο, δηλαδή μετά από το πολύ
επαναλήψεις (το σύνολο
μπορεί
να περιέχει το πολύ
κόμβους και κάθε κόμβος εισάγεται το πολύ μία φορά σε
αυτό). Σε κάθε επανάληψη (δηλαδή για κάθε κόμβο του
) ο αλγόριθμος
εξετάζει όλες τις κορυφές που ξεκινούν από έναν κόμβο του γραφήματος, το
πλήθος των οποίων είναι το πολύ $n$. Συνεπώς ο αλγόριθμος τερματίζει μετά από
το πολύ
βήματα. Άρα, η χρονική πολυπλοκότητα του Αλγορίθμου
\ref{r_algorithm} είναι
.
Το πρόβλημα της ΠΡΟΣΠΕΛΑΣΙΜΟΤΗΤΑΣ λοιπόν μπορεί να λυθεί σε χρόνο
πολυωνυμικό στο μέγεθος της εισόδου. Το αποτέλεσμα αυτό, όπως θα δούμε σε
επόμενα μαθήματα, κατατάσει την ΠΡΟΣΠΕΛΑΣΙΜΟΤΗΤΑ στην κλάση , την
κλάση όλων των προβλημάτων για τα οποία υπάρχει αλγόριθμος που τα επιλύει σε
πολυωνιμικό χρόνο.
Μηχανή Turing
Ορίσαμε τη μηχανή Turing ως μια διατεταγμένη τετράδα
όπου
1. είναι το πεπερασμένο σύνολο των καταστάσεων της
,
2. είναι το πεπερασμένο αλφάβητο της
,
3. είναι η αρχική κατάσταση της
,
, και
4. είναι η
συνάρτηση μετάβασης της
.
Στο αλφάβητο της μηχανής περιέχονται οι ειδικοί χαρακτήρες
και
(το κενό σύμβολο\footnote{Προσοχή, το κενό σύμβολο συμβολίζεται με
στο σύγγραμμα διδασκαλίας \cite{KavvadiasBook}.}) ενώ η κατάσταση
αποδοχής
, η κατάσταση απόρριψης
και η κατάσταση
τερματισμού
δεν ανήκουν στο σύνολο των καταστάσεων
της μηχανής. Η
συμβολοσειρά εισόδου
δεν περιέχει
κενά σύμβολα, οπότε το σύμβολο
οριοθετεί την αρχή και το κενό σύμβολο
οριοθετεί το τέλος της εισόδου της μηχανής.
Στη βιβλιογραφία μπορεί να συναντήσει κανείς διάφορες παραλλαγές στον ορισμό
της μηχανής Turing. Για παράδειγμα, ο Χρήστος Παπαδημητρίου \cite{Pap94}
ορίζει τη μηχανή Turing με τον παραπάνω τρόπο ενώ ο Michael Sipser
\cite{Sipser97} ορίζει τη μηχανή Turing ως μια διατεταγμένη επτάδα. Οι
διαφορές που μπορεί να παρουσιάζουν οι ορισμοί είναι επουσιώσεις και δεν
επιρεάζουν τη συμπεριφορά του μαθηματικού αυτού μοντέλου υπολογισμού.
Στη συνέχεια δίνουμε κάποιους ορισμούς που αφορούν στην διαμόρφωση ή
στιγμιαία περιγραφή της μηχανής Turing.
Ορισμός 1 Θα λέμε ότι η διαμόρφωση ακολουθεί τη διαμόρφωση
σε ένα βήμα (και θα συμβολίζουμε με
) αν η μηχανή Turing
σε ένα βήμα της μεταβαίνει από τη διαμόρφωση
στη διαμόρφωση
.
Θα λέμε ότι η διαμόρφωση ακολουθεί τη διαμόρφωση
σε
βήματα, όπου
ακέραιος, (και θα συμβολίζουμε με
) αν υπάρχουν διαμορφώσεις
,
τέτοιες ώστε
,
, και
.
Τέλος, θα λέμε ότι η διαμόρφωση ακολουθεί τη διαμόρφωση
(και θα συμβολίζουμε με
) αν
υπάρχει ακέραιος
τέτοιος ώστε
.
Αν είναι η αρχική κατάσταση της μηχανής Turing
, η αρχική
διαμόρφωση της
θα είναι η
, όπου
είναι η είσοδος της
. Η διαμόρφωση στην οποία η κατάσταση της
είναι η
καλείται διαμόρφωση αποδοχής ενώ η διαμόρφωση όπου η κατάσταση της
είναι η
καλείται διαμόρφωση απόρριψης. Έτσι, θα
λέμε, εναλλακτικά, ότι η μηχανή Turing
αποδέχεται την είσοδο
αν την
αρχική διαμόρφωση ακολουθεί η διαμόρφωση αποδοχής ενώ η μηχανή Turing
απορρίπτει την είσοδο
αν την αρχική διαμόρφωση ακολουθεί η διαμόρφωση
απόρριψης. Τέλος, η διαμόρφωση όπου η κατάσταση της
είναι η
καλείται
διαμόρφωση τερματισμού.
Στη συνέχεια διατυπώνουμε πάλι τον Ορισμό 2.2 του συγγράμματος διδασκαλίας.
Θυμίζουμε ότι με συμβολίζουμε την έξοδο της μηχανής Turing
όταν
αυτή δεχθεί ως είσοδο τη συμβολοσειρά
.
Ορισμός 2 Έστω μία γλώσσα. Αν μία μηχανή Turing
είναι τέτοια ώστε για κάθε συμβολοσειρά
,
και για κάθε συμβολοσειρά
,
, τότε λέμε ότι η
αποφασίζει (decides) την
. Αν μία μηχανή Turing
είναι τέτοια ώστε για κάθε συμβολοσειρά
,
και για κάθε συμβολοσειρά
,
, τότε λέμε ότι η
αποδέχεται (accepts) την
.
Αν για μία δοθείσα γλώσσα υπάρχει μηχανή Turing που να την αποφασίζει, τότε
λέμε ότι η γλώσσα είναι Turing αποφασίσιμη (Turing decidable) ή
αναδρομική (recursive). Παρόμοια, αν για μία γλώσσα υπάρχει μηχανή
Turing που να την αποδέχεται, τότε λέμε ότι η γλώσσα είναι Turing
αναγνωρίσιμη (Turing recognizable) ή αναδρομικά αριθμήσιμη
(recursive enumerable).
Διατυπώνουμε πάλι το Παράδειγμα 2.1 του διδακτικού συγγράμματος:
Έστω η μηχανή Turing όπου
,
και
η συνάρτηση μετάβασης που ορίζεται
σύμφωνα με τον παρακάτω πίνακα:
![]() |
![]() |
![]() |
---|---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Ας δούμε τις μεταβάσεις της μηχανής με είσοδο, για παράδειγμα την
συμβολοσειρά
, καταγράφοντας τις διαδοχικές διαμορφώσεις της:
.
Η μηχανή λοιπόν τερματίζει στην κατάσταση
όταν στην ταινία
της διαβάσει τον χαρακτήρα a.
Ας δούμε την λειτουργία της μηχανής για μια ακόμα είσοδο, π.χ. για την
συμβολοσειρά :
.
Με είσοδο την συμβολοσειρά η μηχανή
τερματίζει στην κατάσταση
.
Είναι εύκολο να δει κανείς ότι η μηχανή αποδέχεται όλες τις συμβολοσειρές
που περιέχουν τουλάχιστον ένα χαρακτήρα
ενώ σε διαφορετική περίπτωση τις
απορρίπτει. Συνεπώς η
αποφασίζει τη γλώσσα
η
περιέχει τον χαρακτήρα
. Άρα η παραπάνω γλώσσα είναι
Turing αποφασίσιμη (αναδρομική).
Συνεχίζουμε με το Παράδειγμα 2.2,\footnote{(Μια μικρή διόρθωση για το
Παράδειγμα 2.2: Η 9η (συμπεριλαμβανομένης και της αρχικής) διαμόρφωση στον
υπολογισμό της μηχανής με είσοδο είναι η
.}
δίνοντας μια εναλλακτική μηχανή Turing. Θέλουμε να κατάσκευάσουμε μια μηχανή
Turing η οποία να αντιστρέφει κάθε συμβολοσειρά
. Για
παράδειγμα, με είσοδο τη συμβολοσειρά
η μηχανή θα πρέπει να δίνει ως
έξοδο τη συμβολοσειρά
. Η μηχανή
θα έχει το
σύνολο καταστάσεων
, το αλφάβητό της είναι το
και η συνάρτηση μετάβασης
αυτής ορίζεται σύμφωνα με
τον παρακάτω πίνακα:
![]() |
![]() |
![]() |
---|---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Ας δούμε τον υπολογισμό της με είσοδο τη συμβολοσειρά
:
.
Η μηχανή που μόλις σχεδιάσαμε φαίνεται να είναι απλούστερη από αυτήν του Παραδείγματος 2.2, μιας και έχει λιγότερες καταστάσεις. Ωστόσο, όπως θα δούμε σε επόμενα μαθήματα, οι δύο μηχανές είναι ισοδύναμες.
Συνεχίζουμε με την κατασκευή μιας ακόμα μηχανής Turing:
Άσκηση 1
Να κατασκευαστεί μηχανή Turing η οποία να αναγνωρίζει τη γλώσσα
η
περιέχει τη συμβολοσειρά
.
\end{exercise}
Δίνουμε πρώτα μια περιγραφή της λειτουργίας της μηχανής Turing : Με είσοδο
η μηχανή κινεί την κεφαλή της από αριστερά προς δεξιά μέχρι να συναντήσει
τον χαρακτήρα
. Τότε, η μηχανή <<θυμάται>> το
και κινεί την κεφαλή της
μια θέση δεξιά. Αν και ο επόμενος χαρακτήρας είναι
, η μηχανή αποδέχεται
την είσοδο. Διαφορετικά, <<ξεχνάει>> το
και συνεχίζει να κινείται δεξιά.
Ο τυπικός μαθηματικός ορισμός της μηχανής Turing είναι:
όπου
,
, και η
συνάρτηση μετάβασης
ορίζεται σύμφωνα με τον ακόλουθο πίνακα:
![]() |
![]() |
![]() |
---|---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Η μηχανή Turing που μόλις κατασκευάσαμε αναγνωρίζει τη γλώσσα
.
Συνεπώς η
είναι Turing αναγνωρίσιμη (αναδρομικά αριθμήσιμη). Ωστόσο, η
είναι επίσης και Turing αποφασίσιμη (αναδρομική).\footnote{Προσοχή, αυτό
δεν συμβαίνει για κάθε γλώσσα.} Η μηχανή Turing
που αποφασίζει τη γλώσσα
έχει το ίδιο σύνολο καταστάσεων με την
και η συνάρτηση μετάβασης
αυτής δίνεται στον πίνακα που ακολουθεί (συγκρίνετε τον με τον προηγούμενο
πίνακα):
![]() |
![]() |
![]() |
---|---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Αναδρομικές και αναδρομικά αριθμήσιμες γλώσσες
Ξεκινάμε με κάποιες ασκήσεις αναφορικά με τη σχέση αναδρομικών ή αναδρομικά
αριθμήσιμων γλωσσών και της ένωσης αυτών. Να θυμίσουμε ότι μια γλώσσα
είναι αναδρομική (Turing αποφασίσιμη) αν υπάρχει μηχανή Turing, έστω
, που
την αποφασίζει, δηλαδή
και
. Επίσης, μια γλώσσα
είναι αναδρομικά αριθμήσιμη
(Turing αναγνωρίσιμη) αν υπάρχει μηχανή Turing, έστω
, που την αναγνωρίζει,
δηλαδή
.
Άσκηση 2 Δείξτε ότι αν μια γλώσσα είναι αναδρομική τότε είναι και
αναδρομικά αριθμήσιμη.
Αφού η είναι αναδρομική, υπάρχει μηχανή Turing
που την αποφασίζει,
δηλαδή, για κάθε συμβολοσειρά
,
Κατασκευάζουμε μηχανή Turing η οποία είσοδο
προσομοιώνει τη
λειτουργία της
με είσοδο
, και
- αν
, τότε και
, ενώ
- αν
, τότε
(η
πέφτει σε ατέρμονο βρόχο).
- αν
Είναι φανερό ότι . ʼAρα, η μηχανή
αναγνωρίζει τη γλώσσα
,
δηλαδή η
είναι αναδρομικά αριθμήσιμη.
Άσκηση 3 Δείξτε ότι αν μια γλώσσα είναι αναδρομική τότε και η
συμπληρωματική γλώσσα αυτής,
, είναι αναδρομική.
Αφού η είναι αναδρομική, υπάρχει μηχανή Turing
που την αποφασίζει,
δηλαδή, για κάθε συμβολοσειρά
,
Κατασκευάζουμε μηχανή Turing η οποία με είσοδο
προσομοιώνει τη
λειτουργία της
με είσοδο
, και
- αν
, τότε
, ενώ
- αν
, τότε
.
- αν
Είναι φανερό ότι . Επίσης,
. ʼAρα η μηχανή
αποφασίζει τη
γλώσσα
, δηλαδή η
είναι αναδρομική.
Άσκηση 4
Δείξτε ότι, αν οι γλώσσες και
είναι αναδρομικές, τότε και η
ένωση
αυτών είναι αναδρομική γλώσσα.
Μια συμβολοσειρά ανήκει στην ένωση των και
αν ανήκει είτε στην
είτε στην
. Για να δείξουμε ότι η γλώσσα
είναι
αναδρομική θα κατασκευάσουμε μηχανή Turing
η οποία θα την αποφασίζει,
δηλαδή, με είσοδο τη συμβολοσειρά
,
Για την αναδρομική γλώσσα θα υπάρχει μηχανή Turing
που την
αποφασίζει, δηλαδή,
Ομοίως, για την αναδρομική γλώσσα θα υπάρχει μηχανή Turing
που
την αποφασίζει, δηλαδή,
Η μηχανή Turing με είσοδο
, αρχικά προσομοιώνει την λειτουργία της
με είσοδο
. Αν
, τότε
.
Διαφορετικά, προσομοιώνει την λειτουργία της
με είσοδο
. Αν
, τότε
. Διαφορετικά,
.
Είναι φανερό ότι ή
ή
.Επίσης,
και
και
και
\footnote{Το συμπλήρωμα της
ένωσης δύο συνόλων (γλωσσών) ισούται με την τομή των συμπληρωμάτων αυτών.}
Συνεπώς η
αποφασίζει τη γλώσσα
, άρα η
είναι αναδρομική.
Είναι εύκολο να αποδείξει κανείς ότι αντίστοιχη ιδιότητα ισχύει και για την
τομή δυο αναδρομικών γλωσσών (η απόδειξη αφήνεται ως άσκηση).
Άσκηση 5
Δείξτε ότι, αν οι γλώσσες και
είναι αναδρομικές, τότε η ένωση
αυτών είναι αναδρομικά αριθμήσιμη γλώσσα.
Γνωρίζουμε ότι αν μια γλώσσα είναι αναδρομική τότε είναι και αναδρομικά
αριθμήσιμη. Σύμφωνα με την προηγούμενη άσκηση, η ένωση δύο
αναδομικών γλωσσών
και
είναι αναδρομική γλώσσα, άρα και
αναδρομικά αριθμήσιμη.
Άσκηση 6
Δείξτε ότι, αν οι γλώσσες και
είναι αναδρομικά αριθμήσιμες, τότε
και η ένωση
αυτών είναι αναδρομικά αριθμήσιμη γλώσσα.
θα κατασκευάσουμε μια μηχανή Turing που να αναγνωρίζει τη γλώσσα
, δηλαδή, με είσοδο τη συμβολοσειρά
,
Για την αναδρομικά αριθμήσιμη γλώσσα θα υπάρχει μηχανή Turing
που
την αναγνωρίζει, δηλαδή
Ομοίως, για την αναδρομικά αριθμήσιμη γλώσσα θα υπάρχει μηχανή Turing
που την αναγνωρίζει, δηλαδή
Η μηχανή Turing θα προσομοιώνει τη λειτουργία των
και
.
Προσέξτε όμως ότι σε αυτή την περίπτωση η δυο μηχανές θα πρέπει να λειτουργούν
<<παράλληλα>> και όχι <<σειριακά>> (όπως στην προηγούμενη άσκηση) διότι
ενδέχεται η
με είσοδο
(άρα και
) να
πέσει σε ατέρμονο βρόχο με συνέπεια η
να μην προσομοιώσει ποτέ τη
λειτουργία της
με είσοδο
(η οποία θα τερμάτιζε με κατάσταση
αποδοχής).
Έτσι, λοιπόν, η μηχανή Turing με είσοδο
προσομοιώνει την λειτουργία
της
με είσοδο
και της
με είσοδο
, κάνοντας εναλλάξ ένα βήμα
της
και ένα βήμα της
. Αν
, τότε
. Επίσης, αν
, τότε
. Σε κάθε άλλη
περίπτωση,
.
Είναι φανερό ότι ή
ή
Επίσης,
και
και
και
Συνεπώς η
αναγνωρίζει τη γλώσσα
, άρα η
είναι αναδρομικά αριθμήσιμη.
Είναι εύκολο να αποδείξει κανείς ότι αντίστοιχη ιδιότητα ισχύει και για την
τομή δυο αναδρομικά αριθμήσιμων γλωσσών (η απόδειξη αφήνεται
ως άσκηση).
Περνάμε τώρα στην κατασκευή μηχανών Turing που αναγνωρίζουν ή αποφασίζουν
συγκεκριμένες γλώσσες.
Άσκηση 7
Να κατασκευαστεί μηχανή Turing η οποία να αναγνωρίζει τη γλώσσα
Ας δώσουμε πρώτα με άτυπη περιγραφή της λειτουργίας της . H
σαρώνει την
είσοδο της από αριστερά προς δεξιά μέχρι να συναντήσει το πρώτο
. Η
<<θυμάται>> το
και συνεχίζει να κινείται δεξιά μέχρι να συναντήσει το
δεύτερο
. Αν ακολουθεί το κενό σύμβολο, η
αποδέχεται την είσοδο ενώ
διαφορετικά την απορρίπτει.
Ο τυπικός μαθηματικός ορισμός της μηχανή Turing είναι ο εξής:
όπου
,
, και η συνάρτηση μετάβασης
ορίζεται σύμφωνα με τον ακόλουθο πίνακα:
![]() |
![]() |
![]() |
---|---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
'Ασκηση 8
Να κατασκευαστεί μηχανή Turing η οποία να αποφασίζει τη γλώσσα
η συμβολοσειρά
είναι παλίνδρομο.
Μια συμβολοσειρά καλείται παλίνδρομο εάν είναι αναγνώσιμη με τον ίδιο
τρόπο και από αριστερά προς τα δεξιά αλλά και από δεξία προς τα αριστερά. Για
παράδειγμα, η συμβολοσειρά νιψονανομηματαμημονανοψιν είναι παλίδρομο.
Ας δώσουμε πρώτα με άτυπη περιγραφή της λειτουργίας της . Η
διαβάζει το
περιεχόμενο του πρώτου κυτάρου της ταινίας της, το θυμάται και το
<<διαγράφει>> (γράφει τον χαρακτήρα
). Στη συνέχεια σαρώνει την είσοδο
μέχρι το τέλος της (συναντά το κενό σύμβολο
). Αν το τελευταίο
στοιχείο συμφωνεί με το πρώτο, κινείται αριστερά μέχρι να συναντήσει την (νέα)
αρχή της ταινίας και επαναλαμβάνει τη διαδικασία. Αν όχι, απορρίπτει την
είσοδο. Η μηχανή αποδέχεται την είσοδο όταν στην ταινία της υπάρχουν μόνο κενά
σύμβολα (η περίπτωση όπου η είσοδος έχει άρτιο μήκος) ή απομείνει ένα μόνο
σύμβολο (η περίπτωση όπου η είσοδος έχει περιττό μήκος).
Ο τυπικός μαθηματικός ορισμός της μηχανή Turing είναι ο εξής:
όπου
,
, και η συνάρτηση μετάβασης
ορίζεται σύμφωνα με τον ακόλουθο πίνακα:
![]() |
![]() |
![]() |
---|---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
---|---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Παραλλαγές της μηχανής Turing
Ξεκινάμε με την κατασκευή μιας μηχανής Turing με ταινίες η οποία
αποφασίζει συγκεκριμένη γλώσσα.
Άσκηση 9
Να κατασκευαστεί μηχανή Turing ταινιών η οποία να αποφασίζει τη γλώσσα
η συμβολοσειρά
είναι παλίνδρομο.
Θυμίζουμε ότι μια συμβολοσειρά καλείται παλίνδρομο εάν είναι αναγνώσιμη με
τον ίδιο τρόπο και από αριστερά προς τα δεξιά αλλά και από δεξία προς τα
αριστερά.
Δίνουμε την περιγραφή της λειτουργίας της μηχανής Turing: Η μηχανή,
1.Δημιουργεί ένα αντίγραφο της εισόδου της στη δεύτερη ταινία.
2.Τοποθετεί την κεφαλή της πρώτης ταινίας στο πρώτο σύμβολο της εισόδου και την κεφαλή της δεύτερης ταινίας στο τελευταίο σύμβολο του αντίγραφου.
3.Μετακινεί τις δύο κεφαλές με αντίθετη φορά, ελέγχοντας κάθε φορά εάν το τρέχον σύμβολο στην πρώτη ταινία ταυτίζεται με το τρέχον σύμβολο στην δεύτερη ταινία. Αν όχι, τότε η μηχανή απορρίπτει την είσοδο. Διαφορετικά, όταν η κεφαλή της πρώτης ταινίας φτάσει στο τέλος της εισόδου (και η κεφαλή της δεύτερης ταινίας φτάσει στην αρχή της), τότε η μηχανή αποδέχεται την είσοδο.
Ο τυπικός μαθηματικός ορισμός της μηχανής είναι ο εξής: όπου
,
, και η
συνάρτηση μετάβασης
ορίζεται σύμφωνα με τον ακόλουθο πίνακα:
![]() |
![]() |
![]() |
![]() |
---|---|---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Αποδείξαμε ότι για κάθε μηχανή Turing ταινιών υπάρχει
ισοδύναμη μηχανή Turing μιας ταινίας. Θυμίζουμε ότι δυο μηχανές Turing
καλούνται ισοδύναμες αν αναγνωρίζουν (αποδέχονται) την ίδια γλώσσα.
Άσκηση 10
Δείξτε ότι μια γλώσσα είναι αναδρομικά αριθμήσιμη αν και μόνο αν υπάρχει
μηχανή Turing
ταινιών που την αναγνωρίζει.
Έστω ότι η είναι αναδρομικά αριθμήσιμη. Τότε, εξ ορισμού, υπάρχει μηχανή
Turing, έστω
, που αναγνωρίζει την
. Θα κατασκευάσουμε μηχανή Turing
ταινιών που να αναγνωρίζει την
. Η κατασκευή είναι ιδιαίτερα απλή:
Η
με είσοδο
προσομοιώνει τη λειτουργία της
με είσοδο
και
αποδέχεται την είσοδο όταν η
αποδεχθεί την είσοδο. Είναι φανερό ότι η
μηχανή Turing
που κατασκευάσαμε αναγνωρίζει τη γλώσσα
.
Αντίστροφα τώρα, έστω ότι υπάρχει μηχανή Turing
ταινιών που
αναγνωρίζει τη γλώσσα
. Για την
υπάρχει ισοδύναμη μηχανή Turing
μιας ταινίας. ʼΑρα υπάρχει μηχανή Turing μιας ταινίας που αναγνωρίζει την
,
δηλαδή η
είναι αναδρομικά αριθμήσιμη.
Μια ακόμα παραλλαγή του βασικού μοντέλου της μηχανής Turing είναι ο
απαριθμητής (enumerator). Πρόκειται για μια μηχανή Turing η οποία είναι
συνδεδεμένη με μια συσκευή εξόδου (για παράδειγμα, με έναν εκτυπωτή). Ο
απαριθμητής ξενικά με κενή ταινία εισόδου και τυπώνει στη συσκευή εξόδου μια
μη πεπερασμένη ακολουθία απο συμβολοσειρές από κάποιο αλφάβητο, οι οποίες
χωρίζονται μεταξύ τους με κάποιο ειδικό χαρακτήρα (π.χ.
). Ένας
απαριθμητής απαριθμεί μια γλώσσα
εάν στην συσκευή εξόδου τυπώνει τις
συμβολοσειρές που ανήκουν στην
. Η έξοδος των συμβολοσειρών γίνεται με
αυθαίρετο τρόπο (όχι κατ' ανάγκη με κάποια συγκεκριμένη διάταξη) και
ενδεχομένως και με επαναλήψεις.
Το θεώρημα που ακολουθεί φανερώνει τη σχέση μεταξύ των απαριθμητών και των αναδρομικά αριθμήσιμων γλωσσών.
Θεώρημα 1:Μια γλώσσα είναι αναδρομικά αριθμήσιμη αν και μόνο αν υπάρχει απαριθμητής που την απαριθμεί.
Απόδειξη Ας θεωρήσουμε αρχικά ότι μια γλώσσα είναι αναδρομικά
αριθμήσιμη και έστω
η μηχανή Turing που την αναγνωρίζει. Θεωρούμε την
ακολουθία
όλων των δυνατών συμβολοσειρών του αλφαβήτου.
Κατασκευάζουμε απαριθμητή
ο οποίος λειτουργεί ως εξής:
Για
1. Προσομοιώνει τη λειτουργία της για
βήματα με είσοδο κάθε μια από
τις συμβολοσειρές
.
2. Κάθε φορά που η αποδέχεται μια συμβολοσειρά, ο
την τυπώνει στην
έξοδο του.
Αν μια συμβολοσειρά ανήκει στη γλώσσα
, τότε σε κάποιο βήμα του
υπολογισμού του ο
θα τυπώσει την
στην έξοδο του. Η συμβολοσειρά
ενδεχομένως να εμφανιστεί περισσότερες από μία φορές στην έξοδο του
, αφού
η μηχανή
κάνει κάθε φορά
βήματα για κάθε συμβολοσειρά
.
Ο τρόπος που λειτουργεί ο απαριθμητής αποφεύγει την περίπτωση η να
<<κολλήσει>> για συγκεκριμένη συμβολοσειρά εισόδου
, κάτι που θα
συνέβαινε στην περίπτωση που προσομοίωνε την
με είσοδο
από την αρχή
μέχρι το τέλος της λειτουργίας της. Η τεχνική αυτή καλείται μέθοδος της
ουράς του περιστεριού (dove tailing method).
Αντίστροφα τώρα, έστω ότι υπάρχει απαριθμητής που απαριθμεί τη γλώσσα
. Κατασκευάζουμε μηχανή Turing
η οποία με είσοδο
λειτουργεί ως
εξής: Προσομοιώνει τη λειτουργία του
(αγνοώντας την είσοδο) και κάθε φορά
που ο
τυπώνει κάποια συμβολοσειρά στην έξοδο του, την συγκρίνει με την
. Αν η
εμφανιστεί στην έξοδο του
, τότε η
τερματίζει με
κατάσταση αποδοχής.
Είναι φανερό ότι η μηχανή που κατασκευάσαμε αναγνωρίζει τη γλώσσα . ʼAρα η
είναι Turing-αναγνωρίσιμη.
Να σημειώσουμε εδώ ότι έχει αξία η ύπαρξη μηχανών Turing (ή απαριθμητών) για μη πεπερασμένες γλώσσες. Αν μια γλώσσα είναι πεπερασμένη, μπορούμε να κατασκευάσουμε μια μηχανή Turing που αποφασίζει τη γλώσσα, ενσωματώνοντας τα στοιχεία της γλώσσας στον πεπερασμένο έλεγχο της μηχανής. Συνεπώς, κάθε πεπερασμένη γλώσσα είναι αναδρομική (άρα και αναδρομικά αριθμήσιμη).
Αποδείξαμε ότι μια γλώσσα είναι αναδρομικά αριθμήσιμη αν και μόνο αν υπάρχει
απαριθμητής που την απαριθμεί. Η επόμενη πρόταση φανερώνει ότι αν ένας
απαριθμητής έχει συγκεκριμένα χαρακτηριστικά, τότε είναι δυνατό να
χρησιμοποιηθεί για την κατασκευή μιας μηχανής Turing που αποφασίζει μια
γλώσσα.
Άσκηση 11
Δείξτε ότι μια γλώσσα είναι αναδρομική αν και μόνο αν υπάρχει απαριθμητής
που απαριθμεί τα στοιχεία της με αυξανόμενο μήκος.
Έστω ότι η είναι αναδρομική και έστω
η μηχανή Turing που αποφασίζει
την
. Θεωρούμε την ακολουθία
όλων των συμβολοσειρών του
αλφαβήτου, διατεταγμένες με αυξανόμενο μήκος. Κατασκευάζουμε απαριθμητή
ο
οποίος λειτουργεί ως εξής:
Για
1. Προσομοιώνει τη λειτουργία της με είσοδο τη συμβολοσειρά
.
2. Αν
NAI, τότε ο
τυπώνει την
. Διαφορετικά,
συνεχίζει (εκτελεί το Βήμα 1 για την επόμενη τιμή του
).
Είναι φανερό ότι ο απαριθμητής απαριθμεί τα στοιχεία της γλώσσας
με
αυξανόμενο μήκος.
Αντίστροφα τώρα, έστω ότι υπάρχει απαριθμητής που απαριθμεί τα στοιχεία
της γλώσσας
με αυξανόμενο μήκος. Κατασκευάζουμε μηχανή Turing
η οποία
με είσοδο
λειτουργεί ως εξής:
Προσομοιώνει τη λειτουργία του (αγνοώντας την είσοδο). Κάθε φορά που ο
δίνει μια συμβολοσειρά στην έξοδο του, η
τη συγκρίνει με την
. Αν η
εμφανιστεί στην έξοδο του
, τότε η
αποδέχεται την
. Αν, όμως,
εμφανιστεί στην έξοδο του
συμβολοσειρά με μήκος μεγαλύτερο από το μήκος
της
, τότε η
απορρίπτει την
.
Είναι φανερό ότι η μηχανή που κατασκευάσαμε αποφασίζει τη γλώσσα . ʼAρα η
είναι αναδρομική.
H μη ντετερμινιστική μηχανή Turing
Το τυπικό μοντέλο της μηχανής Turing λειτουργεί με ντετερμινιστικό τρόπο: κάθε
βήμα του υπολογισμού της καθορίζεται μονοσήμαντα από το προηγούμενο βήμα. Η
έννοια του μη ντετερμινισμού δίνει σε μια μηχανή Turing τη δυνατότητα να
επιλέγει, μεταξύ διαφόρων δυνατών επιλογών, ποιο θα είναι το επόμενο βήμα της
αλλά και την ελευθερία να βρίσκεται ταυτόχρονα σε πολλά σημεία του
υπολογισμού. Οι μεταβάσεις μιας μη ντετερμινιστικής μηχανής Turing
ορίζονται πλέον μέσω μιας σχέσης μετάβασης
και όχι από μια
συνάρτηση μετάβασης
όπως
στην περίπτωση της ντετερμινιστικής μηχανής Turing. Έτσι, ο υπολογισμός μιας
μη ντετερμινιστικής μηχανής Turing δεν είναι μια γραμμική ακολουθία βημάτων
(όπως στην περίπτωση μιας ντετερμινιστικής μηχανής) αλλά ένα δέντρο από
βήματα. Η ρίζα του δέντρου αντιστοιχεί στην αρχή του υπολογισμού. Κάθε
εσωτερικός κόμβος του δέντρου αντιστοιχεί σε ένα ενδιάμεσο σημείο του
υπολογισμού. Η μηχανή μπορεί να επιλέξει πιο θα είναι το επόμενο βήμα της
μεταξύ των απογόνων του κόμβου. Το μέγιστο πλήθος
των δυνατών απογόνων
ενός κόμβου είναι σταθερό και χαρακτηρίζει το βαθμό του μη
ντετερμινισμού. Τέλος, τα φύλλα του δέντρου αντιστοιχούν στις καταστάσεις
αποδοχής και απόρριψεις
και
αντίστοιχα, ή και στην
κατάσταση τερματισμού
.
Ο τυπικός μαθηματικός ορισμός της μη ντετερμινιστικής μηχανής Turing είναι ο
ακόλουθος:
Ορισμός 3
Μια μη ντετερμινιστική μηχανή Turing είναι μία διατεταγμένη τετράδα
. Το
είναι το πεπερασμένο σύνολο καταστάσεων', το
το πεπερασμένο αλφάβητο και η
είναι η αρχική κατάσταση. Το
είναι ένα υποσύνολο του
και
ονομάζεται σχέση μετάβασης.
Μια μη ντετερμινιστική μηχανή Turing αποδέχεται την συμβολοσειρά
εισόδου εάν στο δέντρο του υπολογισμού της υπάρχει κάποιο μονοπάτι
(δηλαδή, εάν υπάρχει ακολουθία μεταβάσεων) που καταλήγει σε κατάσταση
αποδοχής. Σε διαφορετική περίπτωση, η μηχανή δεν αποδέχεται την
είσοδο της. Βλέπουμε ότι μια μη ντετερμινιστική μηχανή Turing είναι αρκετά
γενναιόδωρη όσο αφορά στον τρόπο αποδοχής μιας συμβολοσειράς. Αρκεί η ύπαρξη
ενός μονοπατιού στο (πιθανόν εκθετικά μεγάλου μεγέθους) δέντρο του υπολογισμού
που να καταλήγει σε κατάσταση αποδοχής, ενώ σε περίπτωση μη αποδοχής, απαιτεί
όλα τα δυνατά μονοπάτια να μην καταλήγουν σε κατάσταση αποδοχής. Είναι ήδη
φανερό ότι ο ορίσμος της αποδοχής ή όχι μιας συμβολοσειράς είναι κάθε άλλο
παρά συμμετρικός με τον ορισμό που είχαμε δώσει στη ντετερμινιστική μηχανή.
Αυτό γίνεται ακόμα πιο έντονο στην περίπτωση που θελήσουμε να ορίσουμε πότε
μια μη ντετερμινιστική μηχανή αποδέχεται μια γλώσσα. Στην περίπτωση
του μη ντετερμινισμού οι έννοιες <<αποφασίζω>> και <<αποδέχομαι>> μια γλώσσα
έχουν πλέον την ίδια σημασία. Ο ορισμός είναι ο ακόλουθος:
Ορισμός 4 Έστω μία γλώσσα. Μία μη
ντετερμινιστική μηχανή Turing
αποδέχεται την
αν για κάθε συμβολοσειρά
, υπάρχει μία τουλάχιστον ακολουθία μεταβάσεων που οδηγεί την
σε
κατάσταση αποδοχής. Αντίθετα, για κάθε συμβολοσειρά
, καμία
ακολουθία μεταβάσεων δεν οδηγεί σε κατάσταση αποδοχής.
Πρέπει να σημειωθεί ότι η επιλογή του επόμενου βήματος μιας μη
ντετερμινιστικής μηχανής Turing δεν γίνεται με πιθανοτικό τρόπο (δηλαδή μέσω
κάποιου τυχαίου πειράματος). Μια τέτοια επιλογή θα είχε ως αποτέλεσμα ένα
πιθανοτικό μοντέλο μηχανής Turing, διαφορετικό από το μη ντετερμινιστικό. Ένας
καλός τρόπος θεώρησης της μη ντετερμινιστικής μετάβασης είναι μέσω της
ταυτόχρονης μετάβασης σε όλες τις δυνατές επιλογές, όπως ακριβώς συμβαίνει
όταν κατά την εκτέλεση της μια διεργασία διασπάται σε δύο (ή περισσότερους)
απογόνους της και κάθε απόγονος εκτελείται ανεξάρτητα από τους υπόλοιπους.
Στην πραγματικότητα η μη ντετερμινιστική μηχανή Turing δεν είναι ένα
ρεαλιστικό μοντέλο υπολογισμού. Ωστόσο, πρόκειται για ένα ισχυρό μοντέλο η
αξία του οποίου βρίσκεται στη δυνατότητα που παρέχει για επιπλέον ανάλυση της
πολυπλοκότητας των προβλημάτων. Το βασικό στοιχείο του μη ντετερμινισμού είναι
η διαδικασία <<μάντεψε και επαλήθευσε>>. Αυτό που ουσιαστικά κάνει μια
μη ντετερμινιστική μηχανή Turing είναι να μαντεύει μια ακολουθία βημάτων (με
άλλα λόγια, να μαντεύει τη λύση) και στη συνέχεια να επαληθεύει ότι αυτή
η ακολουθία βημάτων είναι η σωστή. Είναι σαν να ρωτάει κάθε φορά κάποιο
μαντείο ποια πορεία να ακολουθήσει στο δέντρο του υπολογισμού. Το μαντείο
γνωρίζει την ύπαρξη ή όχι του σωστού μονοπατιού και, εφ' όσον υπάρχει, θα
κατευθύνει τον υπολογισμό σε αυτό.
Θα αποδείξουμε στη συνέχεια μια πρόταση που συνδέει κάθε μη ντετερμινιστική μηχανή Turing με μια ισοδύναμη ντετερμινιστική μηχανή Turing. Θυμίζουμε ότι δυο μηχανές είναι ισοδύναμες αν αναγνωρίζουν την ίδια γλώσσα, δηλαδή αν αποδέχονται ακριβώς τις ίδιες συμβολοσειρές.
Θεώρημα 2 Για κάθε μη ντετερμινιστική μηχανή Turing υπάρχει ισοδύναμη ντετερμινιστική
μηχανή Turing.
Απόδειξη Έστω μια μη ντετερμινιστική μηχανή Turing. Θα
κατασκευάσουμε μια ντετερμινιστική μηχανή Turing
η οποία θα είναι
ισοδύναμη με την
. Η
θα πρέπει να προσομοιώνει κάθε δυνατό μη
ντετερμινιστικό υπολογισμό της
. Η βασική ιδέα της προσομοίωσης είναι η
εξής: Κάθε υπολογισμός της
είναι μια ακολουθία από μη ντετερμινιστικές
επιλογές. Αν
είναι ο βαθμός του μη ντετερμινισμού της
(το μέγιστο
πλήθος επιλογών της μηχανής σε κάθε βήμα της), τότε κάθε ακολουθία από
το
πλήθος μη ντετερμινιστικές επιλογές της
(δηλαδή κάθε μονοπάτι μήκος
στο δέντρο του μη ντετερμινιστικού υπολογισμού της
) δεν είναι τίποτε άλλο
παρά μια ακολουθία από
ακεραίους
, όπου
για κάθε
.
Έτσι, για παράδειγμα, στο παρακάτω δέντρο η ακολουθία δηλώνει ότι η
μηχανή ξεκινώντας από τη ρίζα του δέντρου, επιλέγει τον πρώτο απόγονο, στη
συνέχεια τον τρίτο απόγονο αυτού και τέλος τερματίζει στον πρώτο (και
μοναδικό) απόγονο του προηγούμενου κόμβου.
Η ντετερμινιστική μηχανή πρέπει να λαμβάνει υπόψη της όλες τις δυνατές
ακολουθίες επιλογών και να προσομοιώνει τη λειτουργία της
για κάθε μια από
αυτές. Έτσι, ουσιαστικά η
θα διασχίσει όλο (στη χειρότερη περίπτωση) το
δέντρο του μη ντετερμινιστικού υπολογισμού της
. Με ποιό τρόπο η
θα
πρέπει να επισκεφτεί τους κόμβους του δέντρου; Ο ορθός τρόπος είναι η κατά
πλάτος επίσκεψη των κόμβων του δέντρου και όχι η κατά βάθος, διότι είναι
πιθανό κάποιο μονοπάτι να μην καταλήγει ποτέ σε τερματική κατάσταση και η
μηχανή να πέσει σε ατέρμονο βρόχο. Συνεπώς η ντετερμινιστική μηχανή
θα
θεωρεί τις ακολουθίες των μη ντετερμινιστικών επιλογών της
σε αύξουσα
διάταξη αναφορικά με το μήκος τους. Έτσι, στην αρχή θα επισκεφτεί όλους τους
κόμβους του πρώτου επιπέδου, στη συνέχεια όλους τους κόμβους του δεύτερου
επιπέδου, κ.ο.κ. Κάθε φορά η μηχανή θα προσομοιώνει τη λειτουργία της μηχανής
. Αν η
αποδεχθεί την είσοδο (δηλαδή το μονοπάτι καταλήγει σε κατάσταση
αποδοχής), τότε η
αποδέχεται την είσοδο και τερματίζει. Διαφορετικά,
συνεχίζει τον υπολογισμό προσομοιώνοντας τη λειτουργία της
για την επόμενη
ακολουθία επιλογών. Η γέννηση της επόμενης ακολουθίας επιλογών ισοδυναμεί με
τον υπολογισμό του επόμενου
-αδικού θετικού ακεραίου. Αν μια ακολουθία δεν
αντιστοιχεί σε έγκυρο υπολογισμό (δηλαδή δεν υπάρχει το αντίστοιχο μονοπάτι
στο δέντρο) τότε η
προχωρά στην επόμενη ακολουθία στη διάταξη.
Η ντετερμινιστική μηχανή , λοιπόν, θα αποτελείται από
ταινίες, όπως
φαίνεται στο παρακάτω σχήμα:
Η 1η ταινία είναι ταινία μόνο ανάγνωσης και περιέχει την συμβολοσειρά εισόδου
. Στη 2η ταινία η
προσομοιώνει τη λειτουργία της
με είσοδο
και
σύμφωνα με την ακολουθία επιλογών που προσδιορίζει το περιεχόμενο της 3ης
ταινίας. Τέλος, η 3η ταινία περιέχει έναν θετικό
-αδικό ακέραιο που
αντιστοιχεί στην ακολουθία των μη ντετερμινιστικών επιλογών της
.
Αρχικά η 1η ταινία περιέχει τη συμβολοσειρά εισόδου , ενώ η 2η και 3η
ταινία είναι κενές. Η
αντιγράφει το
στη 2η ταινία και παράγει τον
πρώτο
-αδικό ακέραιο στην 3η ταινία. Στη συνέχεια στη 2η ταινία
προσομοιώνει τη λειτουργία της
με είσοδο
σύμφωνα με την ακολουθία
επιλογών που ορίζει το περιεχόμενο της 3ης ταινίας. Αν η
αποδεχθεί την
είσοδο, τότε και η
αποδέχεται την είσοδο και τερματίζει. Διαφορετικά,
αντίγράφει το
στη 2η ταινία, παράγει τον επόμενο
-αδικό ακέραιο στην 3η
ταινία και προσομοιώνει τη λειτουργία της
για τη νέα ακολουθία επιλογών.
Είναι φανερό ότι η ντετερμινιστική μηχανή που κατασκευάσαμε αποδέχεται
ακριβώς εκείνες τις συμβολοσειρές που αποδέχεται η μη ντετερμινιστική μηχανή
, δηλαδή οι δύο μηχανές είναι ισοδύναμες.
Να σημειώσουμε εδώ ότι προφανώς ισχύει και η αντίστροφη πρόταση: για κάθε
ντετερμινιστική μηχανή Turing υπάρχει ισοδύναμη μη ντετερμινιστική μηχανη
Turing, αφού μια ντετερμινιστική μηχανη μπορεί να θεωρηθεί και ως μη
ντετερμινιστική όπου σε κάθε βήμα της έχει μια μόνο δυνατή επιλογή.
H αρχή της διαγωνοποίησης
Η αρχή της διαγωνιοποίησης (diagonalization principle) αποτελεί μία απο τις θεμελειώδεις τεχνικές απόδειξης, μαζί με την μαθηματική επαγωγή (mathematical induction) και την αρχή του περιστεριώνα (pigeonhole principle). Την τεχνική αυτή θα χρησιμοποιήσουμε για να αποδείξουμε το πρώτο μας μη επιλύσιμο πρόβλημα, ένα πρόβλημα δηλαδή για το οποίο αποδεδειγμένα δεν υπάρχει αλγόριθμος που να το επιλύει.
Η αρχή της διαγωνιοποίησης προτάθηκε το 1873 από τον Ρώσο μαθηματικό Georg
Cantor στην προσπάθεια του να συγκρίνει τα μεγέθη μη πεπερασμένων συνόλων. Το
πρόβλημα είναι απλό στην περίπτωση που τα σύνολα είναι πεπερασμένα: Το μέγεθος
ενός πεπερασμένου συνόλου είναι ο πληθικός αριθμός του (το πλήθος των
στοιχείων του), οπότε αρκεί κανείς να μετρήσει το πλήθος των στοιχείων του για
να βρει το μέγεθος του. Αν όμως το σύνολο είναι μη πεπερασμένο, έχει άπειρο
πλήθος στοιχείων οπότε ο πληθικός αριθμός αυτού δεν είναι δυνατό να
υπολογιστεί. Συνεπώς δεν είναι δυνατό να υπολογίσουμε το μέγεθος ενός μη
πεπερασμένου συνόλου μετρώντας τα στοιχεία του. Στην περίπτωση της σύγκρισης,
ωστόσο, των μεγεθών δύο συνόλων (πεπερασμένων ή μη), η μέτρηση του μεγέθους
αυτών δεν είναι απαραίτητη. Αυτό που μας ενδιαφέρει είναι τα σχετικά μεγέθη
των δύο συνόλων. Δυο πεπερασμένα σύνολα έχουν το ίδιο μέγεθος αν μπορούμε να
<<ζευγαρώσουμε>> κάθε στοιχείο του πρώτου συνόλου με ακριβώς ένα στοιχείο του
δεύτερου συνόλου έτσι ώστε όλα τα στοιχεία του πρώτου και του δεύτερου συνόλου
τελικά να έχουν το ταίρι τους. Η ιδέα αυτή μπορεί να επεκταθεί και για μη
πεπερασμένα σύνολα. Δίνουμε τους απαραίτητους μαθηματικούς ορισμούς στη
συνέχεια.
Ορισμός 5
Έστω δυο σύνολα και
και μια συνάρτηση
.
1. Η συνάρτηση καλείται αμφιμονοσήμαντη (ένα-προς-ένα) αν για κάθε
2. Η συνάρτηση καλείται επί αν
, δηλαδή για κάθε
υπάρχει
τέτοιο ώστε
3. Η συνάρτηση καλείται αντιστοιχία αν είναι αμφιμονοσήμαντη και επί.
Αν μια συνάρτηση είναι αντιστοιχία τότε κάθε στοιχείο του
συνόλου
αντιστοιχεί σε μοναδικό στοιχείο του συνόλου
και κάθε στοιχείο
του
έχει μοναδικό στοιχείο του
που αντιστοιχεί σε αυτό.
Ορισμός 6 Δύο σύνολα και
έχουν το ίδιο μέγεθος αν υπάρχει αντιστοιχία
.
Πρόταση 1 Το σύνολο των φυσικών αριθμών και το σύνολο των
άρτιων αριθμών
έχουν το ίδιο μέγεθος.
Απόδειξη Θεωρούμε την απλή αντιστοιχία με
για κάθε
. Η αντιστοίχιση των στοιχειών των δύο συνολών φαίνεται στον
παρακάτω πίνακα.
![]() |
![]() |
---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Σύμφωνα με τον ορισμό του Cantor, τα σύνολα και
έχουν το ίδιο
μέγεθος (ακόμα κι αν το πρώτο είναι υπερσύνολο του δεύτερου!).
Ορισμός 7 Το σύνολο καλείται μετρήσιμο αν είναι πεπερασμένο ή έχει το ίδιο μέγεθος
με το
.
Σύμφωνα με την προηγούμενη πρόταση, το σύνολο των άρτιων αριθμών είναι
μετρήσιμο. Είναι εύκολο να δεί κανείς ότι το ίδιο ισχύει και για το σύνολο των
περιττών αριθμών .
Το σύνολο των ρητών αριθμών είναι
μετρήσιμο.
Απόδειξη Το σύνολο είναι μη πεπερασμένο, οπότε θα πρέπει να δείξουμε ότι
έχει το ίδιο μέγεθος με το
, δηλαδή να ορίσουμε μια αντιστοιχία
που να αντιστοιχεί τους φυσικούς αριθμούς στους ρητούς. Ένας εύκολος
τρόπος δημιουργήσουμε μια λίστα με όλους τους ρητούς αριθμούς και στη συνέχεια
να αντιστοιχίσουμε τον αριθμό
με τον πρώτο αριθμό στη λίστα, τον αριθμό
με τον δεύτερο αριθμό στη λίστα, κ.ο.κ. Πρέπει ωστόσο να προσέξουμε κάθε
ρητός αριθμός να εμφανίζεται μόνο μια φορά στη λίστα.
Ας θεωρήσουμε ένα μη πεπερασμένο πίνακα από κλασματικούς αριθμούς όπου η
-οστή γραμμή του περιέχει αριθμούς με αριθμητή
και η
-οστή στήλη του
περιέχει αριθμούς με παρανομαστή
. Έτσι, ο αριθμός
θα είναι
το στοιχείο της
-οστής γραμμής και της
-οστής γραμμής του πίνακα.
Ένας τρόπος για να πάρουμε τη λίστα των ρητών αριθμών είναι να ξεκινήσουμε με
τα στοιχεία της πρώτης γραμμής του πίνακα. Ωστόσο, η πρώτη γραμμή περιέχει μη
πεπερασμένο πλήθος στοιχείων, οπότε στη λίστα δεν θα συμπεριλάβουμε ποτέ τα
στοιχεία των υπολοίπων γραμμών. Το ίδιο ισχύει και για τις στήλες του πίνακα.
Ο σωστός τρόπος είναι να εισάγουμε στη λιστα τα στοιχεία σύμφωνα με τη σειρά
που εμφανίζονται στις διαγωνίους του πίνακα: ξεκινάμε από την πρώτη διαγώνιο,
επάνω αριστερα στον πίνακα (που περιέχει μόνο το στοιχείο ), στη
συνέχεια με την δεύτερη διαγώνιο (που περιέχει τα στοιχεία
και
, κ.ο.κ. Προσέχουμε ωστόσο, κάθε φορά, κα μην εισάγουμε στη λίστα
στοιχεία των διαγωνίων τα οποία υπάρχουν ήδη στη λίστα, όπως συμβαίνει για
παράδειγμα με το στοιχείο
της τρίτης διαγωνίου.
Μπορέσαμε, έτσι, να βρούμε μια αντιστοιχία μεταξύ του συνόλου των
φυσικών αριθμών και του συνόλου
των ρητών αριθμών. Αρα το σύνολο
είναι μετρήσιμο.
Ίσως να έχει δημιουργηθεί η εντύπωση ότι όλα τα μη περεπασμένα σύνολα έχουν το
ίδιο μέγεθος. Ωστόσο, όπως θα δούμε στη συνέχεια, αυτό δεν ισχύει.
Συγκεκριμένα, ας θεωρήσουμε το σύνολο των πραγματικών αριθμών. Θα
χρησιμοποιήσουμε τη μέθοδο της διαγωνιοποίησης για να αποδείξουμε ότι το
είναι μη μετρήσιμο σύνολο. Η απόδειξη του θεωρήματος που ακολουθεί, όπως και η
τεχνική της διαγωνιοποίησης, αποδίδεται στον Georg Cantor.
Πρόταση 3 Το σύνολο των πραγματικών αριθμών είναι μη μετρήσιμο.
Απόδειξη Θα αποδείξουμε ότι δεν είναι δυνατή η ύπαρξη αντιστοιχίας από το
στο
. Ας υποθέσουμε ότι κάτι τέτοιο δεν ισχύει. Θα καταλήξουμε σε άτοπο.
Έστω ότι υπάρχει αντιστοιχια από το
στο
. Η
αντιστοιχεί
κάθε φυσικό αριθμό με ακριβώς έναν πραγματικό αριθμό και, επίσης, για κάθε
πραγματικό αριθμό υπάρχει φυσικός αριθμός τον οποίο η
αντιστοιχεί σε
αυτόν. Μια τέτοια αντιστοιχία θα είναι όπως αυτή που παρουσιάζουμε στον πίνακα
που ακολουθεί.
![]() |
![]() |
---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Θα δείξουμε ότι υπάρχει πραγματικός αριθμός ο οποίος δεν έχει
συμπεριληφθεί στην παραπάνω αντιστοιχία, δηλαδή,
για κάθε
. Ο αριθμός αυτός θα πρέπει να είναι διαφορετικός από όλους τους
αριθμούς που εμφανίζονται στη δεύτερη στήλη του πίνακα και προκύπτει αν
αλλάξουμε τα ψηφία της διαγωνίου που αντιστοιχεί στο δεκαδικό μέρος του κάθε
αριθμού. Έτσι μπορούμε να θέσουμε αυθαίρετα το 1ο δεκαδικό ψηφίο του
ίσο
με 7, έτσι ώστε ο
να διαφέρει από τον αριθμό
στο 1ο δεκαδικό ψηφίο (τουλάχιστον). Όμοια, μπορούμε να θέσουμε αυθαίρετα το
2ο δεκαδικό ψηφίο του
ίσο με 3, έτσι ώστε ο
να διαφέρει από το
στο 2ο δεκαδικό ψηφίο, κ.ο.κ. Έτσι, για
παράδειγμα, ο αριθμός
δεν ανήκει στον παραπάνω πίνακα αφού
διαφέρει από κάθε
στο
-οστό δεκαδικό ψηφίο.
Συνεπώς δεν υπάρχει αντιστοιχία από το στο
, οπότε το σύνολο
είναι μη μετρήσιμο.
Επιλύσιμα και μη επίλυσιμα προβλήματα
Πριν ασχοληθούμε με τη μελέτη της δυσκολίας επίλυσης υπολογιστικών προβλημάτων είναι απαραίτητο να αναφερθούμε σε ένα βασικό ερώτημα που αντιμετωπίζουμε κάθε φορά που μας ζητείται να λύσουμε ένα πρόβλημα: το πρόβλημα λύνεται; Ένα πρόβλημα είναι επιλύσιμο αν μπορεί να σχεδιαστεί κάποιος αλγόριθμος που να το επιλύει, δηλαδή μια σαφής και πεπερασμένου μήκους ακολουθία από ενέργειες που λύνουν το πρόβλημα. Ο ορισμός που δώσαμε για την έννοια του αλγορίθμου είναι διαισθητικός και χρησιμοποιείται από τα αρχαία χρόνια στην βιβλιογραφία για το σχεδιασμό αλγορίθμων που επιλύουν διαφόρων ειδών προβλήματα. Ωστόσο, ο διαισθητικός ορισμός του αλγορίθμου περιόριζε τους μαθηματικούς στο να κατανοήσουν πλήρως τους αλγορίθμους, γεγονός που έκανε επιτακτική την ανάγκη του αυστηρού ορισμό της έννοιας του αλγορίθμου.
Στις αρχές του 1900 όταν ο David Hilbert θέλησε να σχεδιάσει έναν αλγόριθμο ο
οποίος να εξετάζει αν ένα πολυώνυμο έχει ακέραια λύση. Το πρόβλημα αυτό,
γνωστό ως το δέκατο πρόβλημα του Hilbert, απαιτούσε γνώση του
αυστηρού μαθηματικού ορισμού της έννοιας του αλγορίθμου. Ο ακριβής ορισμός
δώθηκε το 1936 από τους Alonzo Church και Alan Turing. Ο Church όρισε την
έννοια του αλγορίθμου μέσω του λογισμού λάμδα ( calculus)
και ο Turing μέσω μιας μηχανής, της γνωστής μας πλέον μηχανής Turing.
Απεδείχθη ότι ο διαισθητικός ορισμός είναι ισοδύναμος με τον αυστηρό ορισμό
της έννοιας του αλγορίθμου και η σχέση που συνδέει τους δυο ορισμούς καλείται
Θέση των Church--Turing. Η θέση αυτή, με απλά λόγια, μας λέει ότι
όλοι οι λογικοί ορισμοί που δόθηκαν για την έννοια του αλγορίθμου είναι μεταξύ
τους ισοδύναμοι και, επιπλέον, κάθε λογικός ορισμός που ενδεχομένος δοθεί στο
μέλλον θα είναι επίσης ισοδύναμος με ήδη υπάρχοντες.
Η ύπαρξη της καθολικής μηχανής Turing οδήγησε σύντομα σε προβλήματα τα οποία δεν έχουν λύση, προβλήματα για τα οποία αποδεδειγμένα δεν υπάρχει αλγόριθμος που να τα επιλύει. Ο λόγος που συμβαίνει αυτό είναι προφανής: υπάρχουν περισότερες γλώσσες (προβλήματα) από τις μηχανές Turing (αλγόριθμοι) που τις αποφασίζουν. Τα προβλήματα αυτά καλούνται \textit{μη επιλύσιμα} (unsolvable) ή μη αποκρίσιμα (undecidable) αν πρόκειται για προβλήματα απόφανσης, και οι γλώσσες που αντιστοιχούν σε αυτά είναι μη αναδρομικές.
Το πιο φημισμένο, ίσως, μη αποκρίσιμο πρόβλημα είναι το πρόβλημα του τερματισμού (the halting problem). Στο πρόβλημα αυτό δίνεται ένα πρόγραμμα μαζί με τις προδιαγραφές του (δηλαδή οδηγίες για το τι πρέπει να κάνει το πρόγραμμα) και μια είσοδος του προγράμματος και ζητείται απάντηση για το αν το πρόγραμα θα τερματίσει τη λειτουργία του για τη συγκεκριμένη είσοδο. Θα μελετήσουμε το πρόβλημα του τερματισμού στην ενότητα που ακολουθεί.
Κλείνοντας την παρούσα ενότητα να αναφέρουμε ότι το δέκατο πρόβλημα του
Hilbert είναι μη επιλύσιμο, ένα αποτέλεσμα που εδόθη το 1970 από τον Yuri
Matijasevic.
Το πρόβλημα του τερματισμού
Ο τυπικός ορισμός του προβλήματος του τερματισμού είναι ο ακόλουθος:
ΤΕΡΜΑΤΙΣΜΟΣ (HALTING)
Στιγμιότυπο: | Η κωδικοποίηση μιας μηχανής Turing ![]() ![]() |
Ερώτηση: | Τερματίζει η ![]() ![]() |
Η γλώσσα που αντιστοιχεί στο πρόβλημα του τερματισμού είναι η γλώσσα που
περιλαμβάνει όλες τις συμβολοσειρές που κωδικοποιούν μια μηχανή Turing και μια
είσοδο, έτσι ώστε η μηχανή να τερματίζει με αυτήν την είσοδο, δηλαδή,
η
τερματίζει με είσοδο
=
Είναι εύκολο να αποδείξουμε την ακόλουθη πρόταση:
Πρόταση 4
Η γλώσσα είναι αναδρομικά αριθμήσιμη.
Απόδειξη
Θα κατασκευάσουμε μηχανή Turing η οποία θα αναγνωρίζει τη γλώσσα
. Η κατασκευή είναι απλή: H
με είσοδο
θα
προσομοιώνει τη λειτουργία της
με είσοδο
. Αν
τότε
= ΝΑΙ, διαφορετικά
Είναι φανερό ότι η
αναγνωρίζει τη γλώσσα
,
άρα
είναι αναδρομικά αριθμήσιμη.
Είναι εύλογο να αναρωτηθεί κανείς αν η γλώσσα είναι και αναδρομική,
δηλαδή αν το πρόβλημα του τερματισμού είναι αποκρίσιμο. Δείτε ότι η
δεν
είναι απλά μια αναδρομικά αριθμήσιμη γλώσσα αλλά έχει επιπλέον μια πολύ
σημαντική ιδιότητα: αν υποθέσουμε ότι υπάρχει αλγόριθμος που επιλύει
το πρόβλημα του τερματισμού, τότε μπορούμε να χρησιμοποιήσουμε κατάλληλα τον
αλγόριθμο αυτό για να αποφασίσουμε κάθε αναδρομικά αριθμήσιμη γλώσσα
, ως
εξής: Έστω
η υποτιθέμενη μηχανή Turing που αποφασίζει την γλώσσα
και
η μηχανή Turing που αναγνωρίζει την
. Καλούμε την
με
είσοδο
. Αν η
απορρίψει την είσοδο (η
δεν τερματίζει με είσοδο
), τότε
. Διαφορετικά (η
τερματίζει με είσοδο
), εκτελούμε την
με είσοδο
και αν
(x)= ΝΑΙ
τότε
ενώ διαφορετικά
. Κατασκευάσαμε έτσι
αλγόριθμο που αποφασίζει τη γλώσσα
, άρα η
είναι αναδρομική.
Δυστυχώς, όπως φανερώνει η επόμενη πρόταση, το πρόβλημα του τερματισμού είναι μη αποκρίσιμο.
Θεώρημα 3 Η γλώσσα δεν είναι αναδρομική.
Απόδειξη Ας υποθέσουμε ότι η γλώσσα είναι αναδρομική, υπάρχει δηλαδή μηχανή
Turing, έστω
, η οποία αποφασίζει την
. Χρησιμοποιούμε την
για να κατασκευάσουμε μηχανή Turing
ως εξής: Η
με είσοδο
,
1. Προσομοιώνει τη λειτουργία της με είσοδο
.
2. Αν ΝΑΙ, τότε
.
Διαφορετικά,
ΝΑΙ.
Σύμφωνα με την παραπάνω κατασκευή η μηχανή είτε αποδέχεται την είσοδο της
είτε δεν τερματίζει ποτέ. Ας δούμε την λειτουργία της
με είσοδο την
κωδικοποίηση του εαυτού της.
Αν ΝΑΙ τότε
ΟΧΙ,
οπότε η
δεν τερματίζει με είσοδο τον εαυτό της, δηλαδή
Επίσης, αν
τότε
ΝΑΙ, οπότε η
τερματίζει με είσοδο τον εαυτό της, δηλαδή
ΝΑΙ.
Η μηχανή , λοιπόν, με είσοδο
τερματίζει όταν δεν
τερματίζει και δεν τερματίζει όταν τερματίζει! Καταλήξαμε σε άτοπο, λόγω της
υπόθεσης της ύπαρξης της μηχανής
που αποφασίζει τη γλώσσα
. Συνεπώς
δεν είναι δυνατή η ύπαρξη της
, άρα η
δεν είναι αναδρομική.
Η απόδειξη του προηγούμενου θεωρήματος ομοιάζει μη την τεχνική της
διαγωνιοποίησης που χρησιμοποίησε ο Cantor για να αποδείξει ότι το σύνολο των
πραγματικών αριθμών είναι μη μετρήσιμο. Ας θεωρήσουμε τον Πίνακα 1
όπου περιέχει όλα τα ζευγάρια . Οι γραμμές του πίνακα
είναι όλες οι μηχανές Turing ενώ οι στήλες του πίνακα είναι οι κωδικοποιήσεις
αυτών. Δίνουμε τυχαίες τιμές στα στοιχεία του πίνακα, ανάλογα με το αν η
μηχανή
τερματίζει ή οχι με είσοδο
.
Η μηχανή
αποτελεί και αυτή στοχείο του πίνακα και, σύμφωνα με τον τρόπο που την
κατασκευάσαμε, αλλάζει τα διαγώνια στοιχεία του Πίνακα 1. Για παράδειγμα, θα
είναι
αφού
ΝΑΙ. Όταν θελήσουμε να συμπληρώσουμε το στοιχείο
καταλήγουμε σε αντίφαση.
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() | |
---|---|---|---|---|---|---|---|---|
![]() |
![]() |
NAI | ![]() |
NAI | ![]() |
![]() |
||
![]() |
NAI | ![]() |
![]() |
NAI | NAI | NAI | ||
![]() |
![]() |
NAI | ![]() |
![]() |
NAI | ![]() |
||
![]() |
NAI | NAI | ![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
NAI | ||
![]() |
![]() |
|||||||
![]() |
![]() |
NAI | ![]() |
NAI | ![]() |
![]() |
||
![]() |
![]() |
![]() |
Ο υπολογισμός της με είσοδο
,
Μη αποκρισιμότητα
Συμβολίζουμε με την κλάση των αναδρομικών γλωσσών και με
την
κλάση των αναδρομικά αριθμήσιμων γλωσσών.\footnote{Ίσως έγινε ήδη εμφανές ότι
μια κλάση γλωσσών (ή προβλημάτων) δεν είναι τίποτε άλλο παρά ένα
σύνολο γλωσσών με κοινά χαρακτηριστικά και ιδιότητες (π.χ., αναγνωρίζονται από
μηχανές Turing). Θα ορίσουμε αντίστοιχες κλάσεις σε επόμενα κεφάλαια, όταν
θελήσουμε να μελετήσουμε την {πολυπλοκότητα} των προβλημάτων.}
Γνωρίζουμε ότι κάθε αναδρομική γλώσσα είναι και αναδρομικά αριθμήσιμη, οπότε
. Στην πραγματικότητα ισχύει ότι
} αφού στην προηγούμενη ενότητα αποδείξαμε ότι
(Πρόταση~\ref{HinRE}) ενώ
(Θεώρημα~\ref{HnotinR}).
Έχουμε ήδη αποδείξει κάποιες προτάσεις που συνδέουν τις κλάσεις και
Πρόταση 5
Αν η γλώσσα είναι αναδρομική τότε και
είναι αναδρομική.
Πρόταση 6
H γλώσσα είναι αναδρομική αν και μόνο αν οι γλώσσες
και
είναι αναδρομικά αριθμήσιμες.
Η Πρόταση 5 φανερώνει ότι η κλαση των αναδρομικών γλωσσών
είναι κλειστή ως προς το συμπλήρωμα.\footnote{Θυμηθείτε ότι έχουμε
αποδείξει αντίστοιχες προτάσεις αναφορικά με την ένωση και την τομή
αναδρομικών ή αναδρομικά αριθμήσιμων γλωσσών.} Κάτι τέτοιο ωστόσο δεν ισχύει
για την κλάση των αναδρομικά αριθμήσιμων γλωσσών: Ας θεωρήσουμε τη γλώσσα
, το συμπλήρωμα της γλώσσας
. Η
δεν είναι
αναδρομικά αριθμήσιμη διότι, διαφορετικά, σύμφωνα με την Πρόταση 6,
η
θα ήταν αναδρομική. Στο Σχήμα 1
παρουσιάζουμε τις κλάσεις
και
. Η κλάση
περιέχει τα συμπληρώματα
των αναδρομικά αριθμήσιμων γλωσσών. Έχουμε συναντήσει αρκετές γλώσσες στο
και
. Επίσης δείξαμε ότι
( η
είναι αναδρομικά αριθμήσιμη αλλά όχι αναδρομική) ενώ είναι εύκολο να δούμε ότι
.
Σχήμα 1: Οι κλάσεις των αναδρομικών και αναδρομικά αριθμήσιμων γλωσσών.
Γνωρίζοντας ότι ένα πρόβλημα είναι μη αποκρίσιμο μπορούμε να αποδείξουμε ότι
και άλλα προβλήματα είναι μη αποκρίσιμα χρησιμοποιώντας την μέθοδο της
αναγωγής (reduction). Θα λέμε ότι το πρόβλημα ανάγεται στο
πρόβλημα
αν υπάρχει ένας κατάλληλος μετασχηματισμός που μετατρέπει κάθε
νόμιμο στιγμιότυπο του
σε νόμιμο στιγμιότυπο του
έτσι ώστε μια
λύση του
να αντιστοιχεί σε λύση του
. Υποθέτοντας ότι υπάρχει μια
τέτοια αναγωγή του προβλήματος
στο πρόβλημα
, τότε
1.αν το είναι αποκρίσιμο, τότε και το
είναι αποκρίσιμο, ενώ
2.αν το είναι μη αποκρίσιμο, τότε και το
είναι μη αποκρίσιμο.
Στην πραγματικότητα η αναγωγή του προβλήματος στο πρόβλημα
φανερώνει ότι το
είναι τουλάχιστον τόσο δύσκολο όσο το
.
Θα χρησιμοποιήσουμε την τεχνική της αναγωγής σε επόμενα κεφάλαια όταν θα
μελετήσουμε τη δυσκολία επίλυσης των προβλημάτων. Όσο αφορά στη μη
αποκρισιμότητα, για να αποδείξούμε ότι ένα πρόβλημα είναι μη αποκρίσιμο
ακολουθούμε την εξής διαδικασία: Επιλέγουμε ένα μη αποκρίσιμο
πρόβλημα, έστω το
, και το ανάγουμε στο πρόβλημα που θέλουμε να δείξουμε
ότι είναι μη αποκρίσιμο, έστω το
: Υποθέτουμε ότι υπάρχει αλγόριθμος που
επιλύει το
και κατασκευάζουμε αλγόριθμο που επιλύει το
--- άτοπο!
Η επιλογή του κατάλληλου μη αποκρίσιμου προβλήματος απαιτεί εξοικείωση και
πείρα στις αναγωγές. Μέχρι στιγμής γνωρίζουμε ένα μόνο μη αποκρίσιμο πρόβλημα,
το πρόβλημα του τερματισμού. Θα χρησιμοποιήσουμε αυτό για να αποδείξουμε κι
άλλα μη αποκρίσιμα προβλήματα.
Το πρόβλημα της αποδοχής (the acceptance problem) ορίζεται ως το
πρόβλημα στο οποίο δοθείσης μιας μηχανής Turing και μιας συμβολοσειράς
, ζητείται να αποφανθούμε αν η μηχανή
αποδέχεται τη συμβολοσειρά
.
Σε μορφή γλώσσας, το πρόβλημα της αποδοχής ορίζεται ως
η
αποδέχεται τη συμβολοσειρά
}.
Θα αποδείξουμε ότι δεν υπάρχει αλγόριθμος που να επιλύει το πρόβλημα της αποδοχής, δηλαδή ότι το πρόβλημα αυτό είναι μη αποκρίσιμο.
Θεώρημα 4
Η γλώσσα είναι μη αναδρομική.
Απόδειξη
Η απόδειξη ομοιάζει με αυτήν του προβλήματος του τερματισμού. Έστω ότι
η γλώσσα είναι αναδρομική. Τότε υπάρχει μηχανή Turing, έστω
, η
οποία αποφασίζει την
. Χρησιμοποιούμε την
για να κατασκευάσουμε
μηχανή Turing
ως εξής: Η
με είσοδο
,
1. Προσομοιώνει τη λειτουργία της με είσοδο
.
2. Αν
ΝΑΙ τότε
ΟΧΙ.
Διαφορετικά,
ΝΑΙ.
Σύμφωνα με την παραπάνω κατασκευή η μηχανή είτε αποδέχεται την είσοδο της
είτε την απορρίπτει. Ας δούμε τον υπολογισμό της
με είσοδο την
κωδικοποίηση του εαυτού της.
Αν ΝΑΙ} τότε
OXI,
οπότε η
δεν αποδέχεται την κωδικοποίηση του εαυτού της,
δηλαδή
ΟΧΙ. Επίσης, αν
OXI
τότε
ΝΑΙ, οπότε η
αποδέχεται την κωδικοποίηση του εαυτού της, δηλαδή
NAI.
Η μηχανή , λοιπόν, με είσοδο
αποδέχεται όταν απορρίπτει
και απορρίπτει όταν αποδέχεται! Καταλήξαμε σε άτοπο, λόγω της υπόθεσης της
ύπαρξης της μηχανής
που αποφασίζει τη γλώσσα
. Συνεπώς δεν είναι
δυνατή η ύπαρξη της
, άρα η γλώσσα
είναι μη αναδρομική.
Θα αποδείξουμε τώρα ένα ακόμα μη αποκρίσιμο πρόβλημα:
Άσκηση 12 Δείξτε ότι η παρακάτω γλώσσα είναι μη αναδρομική:
= {
η μηχανή Turing
τερματίζει για κάθε είσοδο }.
θα ανάγουμε τη γλώσσα στη γλώσσα
. Έστω ότι η
είναι αναδρομική.
Τότε υπάρχει μηχανή Turing, έστω
, η οποία αποφασίζει την
, δηλαδή
Θα κατασκευάσουμε μηχανή Turing η οποία θα αποφασίζει τη γλώσσα
,
δηλαδή,
Η λειτουργία της θα είναι η εξής: η
με είσοδο
,
1. Κατασκευάζει μηχανή Turing η οποία με είσοδο
,
(a) Αν , προσομοιώνει τη λειτουργία της
με είσοδο
.
(b) Διαφορετικά, τερματίζει.
2. Εκτελεί την με είσοδο
.
3. Αν , τότε
. Διαφορετικά,
.
Η μηχανή αποφασίζει τη γλώσσα
. Πράγματι,
, δηλαδή αν και
μόνο αν η
τερματίζει για κάθε είσοδο, δηλαδή αν και μόνο αν η
τερματίζει με είσοδο
. Επίσης,
, δηλαδή αν και μόνο αν η
δεν τερματίζει για κάθε είσοδο, δηλαδή αν και μόνο αν η
δεν τερματίζει με
είσοδο
. Συνεπώς η γλώσσα
είναι αναδρομική --- άτοπο. ʼAρα η γλώσσα
είναι μη αναδρομική.
Άσκηση 13
Δείξτε ότι η παρακάτω γλώσσα είναι μη αναδρομική:
η
δεν αποδέχεται καμία είσοδο, δηλ.
.
θα ανάγουμε τη γλώσσα στην
. Έστω ότι η
είναι αναδρομική. Τότε
υπάρχει μηχανή Turing, έστω
, η οποία αποφασίζει τη γλώσσα
,
δηλαδή
Θα κατασκευάσουμε μηχανή Turing η οποία θα αποφασίζει τη γλώσσα
,
δηλαδή,
Η λειτουργία της θα είναι η εξής: η
με είσοδο
,
1. Κατασκευάζει μηχανή Turing η οποία, με είσοδο
, αγνοεί την είσοδο
της και προσομοιώνει τη λειτουργία της
με είσοδο
.
2. Εκτελεί την με είσοδο
.
3. Αν , τότε
. \\
Διαφορετικά,
.
Πράγματι, ,
δηλαδή, αν και μόνο αν η
αποδέχεται κάποια είσοδο, δηλαδή, αν και μόνο αν η
αποδέχεται την
είσοδο
. Επίσης,
,
δηλαδή, αν
και μόνο αν η
δεν αποδέχεται καμία είσοδο, δηλαδή, αν και μόνο αν η
δεν αποδέχεται την είσοδο
. ʼAρα η
αποφασίζει τη γλώσσα
--- άτοπο. Συνεπώς, η γλώσσα
είναι μη αναδρομική.
Άσκηση 14
Δείξτε ότι η παρακάτω γλώσσα είναι μη αναδρομική:
η
αποδέχεται κάθε είσοδο, δηλ.
.
θα ανάγουμε τη γλώσσα στην
. Έστω ότι η
είναι αναδρομική. Τότε
υπάρχει μηχανή Turing, έστω
η οποία αποφασίζει τη γλώσσα
, δηλαδή
Θα κατασκευάσουμε μηχανή Turing η οποία θα αποφασίζει τη γλώσσα
,
δηλαδή
Η λειτουργία της θα είναι η εξής: η
με είσοδο
,
1. Κατασκευάζει μηχανή Turing η οποία με είσοδο
, αγνοεί την είσοδο
της και προσομοιώνει τη λειτουργία της
με είσοδο
.
2. Εκτελεί την με είσοδο
.
3. Αν , τότε
.
Διαφορετικά, .
Η μηχανή αποφασίζει τη γλώσσα
. Πράγματι,
,
δηλαδή αν και μόνο
αν η
αποδέχεται κάθε είσοδο, δηλαδή αν και μόνο αν η
αποδέχεται τη
συμβολοσειρά
. Επίσης,
, δηλαδή αν και μόνο αν η
δεν αποδέχεται
κάθε είσοδο, δηλαδή αν και μόνο αν η
δεν αποδέχεται τη συμβολοσειρά
.
Συνεπώς η γλώσσα
είναι αναδρομική --- άτοπο. ʼAρα η γλώσσα
είναι μη
αναδρομική.
Άσκηση 15
Δείξτε ότι η παρακάτω γλώσσα είναι μη αναδρομική:
η
αποδέχεται τη συμβολοσειρά
.
θα ανάγουμε τη γλώσσα στην
. Έστω ότι η
είναι αναδρομική. Τότε
υπάρχει μηχανή Turing, έστω
, η οποία αποφασίζει τη γλώσσα
,
δηλαδή
Θα κατασκευάσουμε μηχανή η οποία θα αποφασίζει τη γλώσσα
, δηλαδή
Η λειτουργία της θα είναι η εξής: η
με είσοδο
,
1. Κατασκευάζει μηχανή Turing η οποία με είσοδο
,
(a) Αν , προσομοιώνει τη λειτουργία της
με είσοδο
.
Διαφορετικά, απορρίπτει.
2. Εκτελεί την με είσοδο
.
3. Αν , τότε
.
Διαφορετικά, .
Πράγματι, ,
δηλαδή, αν και μόνο αν η
αποδέχεται την
, δηλαδή, αν
και μόνο αν η
αποδέχεται την είσοδο
. Επίσης,
, δηλαδή, αν και
μόνο αν η
δεν αποδέχεται την
, δηλαδή, αν και μόνο αν η
δεν
αποδέχεται την είσοδο
. Συνεπώς, η
αποφασίζει τη γλώσσα
--- άτοπο. ʼAρα η γλώσσα
είναι μη αναδρομική.
Αναδρομικά μη διαχωρίσιμες γλώσσες
Ορίσαμε ως R την κλάση των αναδρομικών γλωσσών και ως RE την κλάση
αναδρομικά αριθμήσιμων γλωσσών. Δείξαμε ότι η κλάση R είναι κλειστή ως προς
το συμπλήρωμα (δηλαδή μια γλώσσα είναι αναδρομική αν και μόνο αν το συμπλήρωμα
της είναι αναδρομική γλώσσα) ενώ η κλάση RE δεν είναι. Έχουμε δει αρκετά
παραδείγματα αναδρομικών γλωσσών, αποδείξαμε ότι
και
, όπου
coRE είναι η κλάση που περιέχει τα συμπληρώματα των αναδρομικά αριθμήσιμων
γλωσσών. Ας δούμε τώρα μια ιδιότητα που μπορεί να έχουν δυο ξένες μεταξύ τους
γλώσσες
και
.\footnote{Οι γλώσσες
και
είναι ξένες
μεταξύ τους αν γλώσσες
.}
Ορισμός 8
Δύο γλώσσες και
καλούνται αναδρομικά μη διαχωρίσιμες
(recursively inseparable) εάν δεν υπάρχει αναδρομική γλώσσα
τέτοια ώστε
και
.
Αν υπάρχει μια τέτοια γλώσσα , οι γλώσσες
και
καλούνται αναδρομικά διαχωρίσιμες. Στο Σχήμα 2
παρουσιάζουμε δυο αναδρομικά διαχωρίσιμες γλώσσες.
Σχήμα 2: Αναδρομικά διαχωρίσιμες γλώσσες
Είναι εύκολο να δούμε ότι οι γλώσσες και
είναι αναδρομικά
μη διαχωρίσιμες. Ας δούμε ~~ ενα ακόμα παράδειγμα αναδρομικά μη διαχωρίσιμων
γλωσσών.
Άσκηση 16
Να αποδειχθεί ότι οι γλώσσες
} και
}
είναι αναδρομικά μη διαχωρίσιμες.
Απόδειξη
Ας υποθέσουμε ότι οι και
είναι αναδρομικά διαχωρίσιμες.
Τότε υπάρχει αναδρομική γλώσσα
τέτοια ώστε
και
. Εφόσον η
είναι
αναδρομική θα υπάρχει μηχανή Turing, έστω
, που αποφασίζει τη
γλώσσα
, δηλαδή
Ας δούμε τον υπολογισμό της μηχανής με είσοδο την
κωδικοποίηση του εαυτού της,
. Υπάρχουν δύο
περιπτώσεις:
-- Αν τότε, εξ ορισμού
της γλώσσας
, θα είναι
. Όμως,
, οπότε
,
δηλαδή,
--- άτοπο!
-- Αν τότε, εξ ορισμού της γλώσσας
, θα είναι
. Όμως,
, οπότε
,
δηλαδή,
--- άτοπο!
Σε κάθε περίπτωση καταλήξαμε σε άτοπο. ʼAρα οι γλώσσες και
είναι
αναδρομικά μη διαχωρίσιμες.
Ας δούμε έναν εναλλακτικό τρόπο απόδειξης της πρότασης: Υποθέτουμε, όπως και
πριν, ότι οι γλώσσες και
είναι αναδρομικά διαχωρίσιμες, οπότε
υπάρχει αναδρομική γλώσσα
τέτοια ώστε
και
. Εφόσον η
είναι
αναδρομική, και η γλώσσα
θα είναι αναδρομική. ʼAρα θα
υπάρχει μηχανή Turing, έστω
, που αποφασίζει την
, δηλαδή
Ας δούμε τώρα τον υπολογισμό της με είσοδο την κωδικοποίηση του εαυτού
της,
. Υπάρχουν δύο περιπτώσεις:
Αν τότε
, οπότε
--- άτοπο!
Αν τότε
,
οπότε
--- άτοπο!
Σε κάθε περίπτωση λοιπόν, καταλήξαμε σε άτοπο. ʼAρα οι γλώσσες και
είναι αναδρομικά μη διαχωρίσιμες.
Κλάσεις πολυπλοκότητας
Έχουμε αναφερεί ήδη ότι για τη μελέτη της υπολογιστικής πολυπλοκότητας των υπολογιστικών προβλήματος θα χρησιμοποιήσουμε τη μηχανή Turing, ένα θεωρητικό υπολογιστικό μοντέλο που είναι ισοδύναμο με κάθε σύγχρονο υπολογιστικό μέσο. Για να μελετήσουμε τα υπολογιστικά προβλήματα και να τα κατηγοριοποιήσουμε ανάλογα με τη δυσκολία επίλυσης τους θα πρέπει να ορίσουμε πρώτα την έννοια του χρόνου (time) που διαρκεί ένας υπολογισμός αλλά και του χώρου (space) που απαιτεί μια μηχανή Turing.\footnote{Κάποιοι από τους ορισμούς που διατυπώνονται στις παρούσες σημειώσεις είναι διαφορετικοί από αυτούς που υπάρχουν στο σύγγραμμα διδασκαλίας. Αντικαταστήστε τους τελευταίους.}
Ορισμός 9
Ο χρόνος που απαιτεί μια ντετερμινιστική μηχανή Turing με είσοδο τη
συμβολοσειρά
είναι το πλήθος των βημάτων (κινήσεων) που κάνει η
ξεκινώντας από την αρχική διαμόρφωση για τον υπολογισμό του
. Αν η
αποκλίνει τότε ο χρόνος είναι ίσος με
.
Στην περίπτωση της μη ντετερμινιστικής μηχανής Turing ο ορισμός του χρόνου
είναι διαφορετικός (θυμηθείτε ότι ο τρόπος αποδοχής μιας μη ντετερμινιστικής
μηχανής είναι διαφορετικός απο τον τρόπο αποδοχής μιας ντετερμινιστικής
μηχανής):
Ορισμός 10
Ο χρόνος που απαιτεί μια μη ντετερμινιστική μηχανή Turing με είσοδο
τη συμβολοσειρά
είναι το μικρότερο πλήθος βημάτων που μπορεί να κάνει η
ξεκινώντας από την αρχική διαμόρφωση για να φτάσει σε κατάσταση αποδοχής.
Σε κάθε άλλη περίπτωση, ο χρόνος της
είναι, συμβατικά, ίσος με
.
Ορίζουμε τώρα την πολυπλοκότητα χρόνου (time complexity) μιας μηχανής
Turing:
Ορισμός 11
Η πολυπλοκότητα χρόνου μιας μηχανής Turing (ντετερμινιστικής ή μη)
είναι μια συνάρτηση
που ορίζεται ως εξής:
έτσι ώστε ο χρόνος που απαιτεί η
με είσοδο
είναι
.
Συνεπώς, ο χρόνος που απαιτεί μια μηχανή Turing με είσοδο μήκους είναι ο
μέγιστος χρόνος πάνω σε όλες τις εισόδους μήκους
. Συνήθως υποθέτουμε ότι
αφού
βήματα πρέπει να κάνει η μηχανή μόνο για να διαβάσει
όλα τα σύμβολα της εισόδου μήκους
.
Για τον ορισμό του χώρου που απαιτεί μια μηχανή Turing θα ορίσουμε μια μικρή
παραλλαγή της μηχανής Turing -ταινιών, τη μηχανή
-ταινιών με
είσοδο και έξοδο: πρόκειται για μια συνηθισμένη μηχανή με
-ταινίες εκ των
οποίων η πρώτη είναι μόνο ανάγνωσης (η ταινία εισόδου) και η τελευταία είναι
μόνο εγγραφής (η ταινία εξόδου). Κατά τη διάρκεια του υπολογισμού της η μηχανή
μπορεί να χρησιμοποιεί μόνο τα κύτταρα των υπολοίπων
ταινιών.
Χρησιμοποιούμε αυτό το μοντέλο υπολογισμού για να ορίσουμε το χώρο που απαιτεί
ο υπολογισμός μιας μηχανής Turing.
Ορισμός 12
Ο χώρος που απαιτεί μια ντετερμινιστική μηχανή Turing '-ταινιών με
είσοδο και έξοδο,
, με είσοδο τη συμβολοσειρά
ισούται με το πλήθος των
κυττάρων που χρησιμοποιεί η
στις
τανίες της ξεκινώντας από την
αρχική διαμόρφωση για τον υπολογισμό του
. Αν η
αποκλίνει στο
τότε ο χώρος είναι ίσος με
.
Ο ορισμός του χώρου μιας μη ντετερμινιστικής μηχανής είναι ο ακόλουθος:
Ορισμός 13
Ο χώρος που απαιτεί μια μη ντετερμινιστική μηχανή Turing -ταινιών με
είσοδο και έξοδο,
, με είσοδο τη συμβολοσειρά
είναι το μικρότερο πλήθος
κυττάρων που μπορεί να χρησιμοποιήσει η
ξεκινώντας από την αρχική
διαμόρφωση για να φτάσει σε κατάσταση αποδοχής. Σε κάθε άλλη περίπτωση, ο
χρόνος της
είναι, συμβατικά, ίσος με
.
Ορίζουμε τώρα την πολυπλοκότητα χώρου (space complexity) μιας μηχανής
Turing:
Ορισμός 14
Η πολυπλοκότητα χώρου μιας μηχανής Turing (ντετερμινιστικής ή μη)
είναι μια συνάρτηση
που ορίζεται ως εξής:
έτσι ώστε ο χώρος που απαιτεί η
με είσοδο
είναι
}.
Για κάθε ντετερμινιστική μηχανή Turing -ταινιών,
, πολυπλοκότητας χρόνου
, μπορούμε να κατασκευάσουμε μια ντετερμινιστική μηχανή Turing
-ταινιών με είσοδο και έξοδο,
, η οποία αρχικά θα αντιγράφει την
είδοσο στην πρώτη της ταινία, στη συνέχεια θα προσομοιώνει τη λειτουργία της
στις επόμενες
ταινίες και στο τέλος του υπολογισμού της θα αντιγράφει
την έξοδο της
στην τελευταία της ταινία. Η
είναι ισοδύναμη με την
και λειτουργεί σε χρόνο
. Αποδείξαμε συνεπώς την ακόλουθη πρόταση:
Πρόταση 7
Για κάθε ντετερμινιστική μηχανή Turing -ταινιών πολυπλοκότητας χρόνου
υπάρχει ισοδύναμη ντετερμινιστική μηχανή Turing
-ταινιών με
είσοδο και έξοδο πολυπλοκότητας χρόνου
.
Έχουμε αποδείξει σε προηγούμενη ενότητα ότι για κάθε ντετερμινιστική μηχανή
Turing -ταινιών υπάρχει ισοδύναμη ντετερμινιστική μηχανή Turing μιας
ταινίας. Με βάση την προσομοίωση που είχαμε κάνει τότε μπορούμε να αποδείξουμε
την ακόλουθη πρόταση:
Θεώρημα 5
Για κάθε ντετερμινιστική μηχανή Turing -ταινιών πολυπλοκότητρας χρόνου
υπάρχει ισοδύναμη ντετερμινιστική μηχανή Turing μιας ταινίας
πολυπλοκότητας χρόνου
.
Η προηγούμενη πρόταση φανερώνει ότι η αύξηση των ταινιών σε μια
ντετερμινιστική μηχανή Turing δεν αυξάνει την υπολογιστική ικανότητα του
μοντέλου μας. Αντιθέτως, αυτό δεν ισχύει στην περίπτωση του μη ντετερμινισμού.
Είχαμε αποδείξει σε προηγούμενη ενότητα ότι για κάθε μη ντετερμινιστική μηχανή
Turing υπάρχει ισοδύναμη ντετερμινιστική μηχανή. Με βάση την προσομοίωση που
είχαμε κάνει τότε μπορούμε να αποδείξουμε την ακόλουθη πρόταση:
Θεώρημα 6
Για κάθε μη ντετερμινιστική μηχανή Turing πολυπλοκότητρας χρόνου
υπάρχει ισοδύναμη ντετερμινιστική μηχανή Turing πολυπλοκότητας χρόνου
.
Ας περάσουμε τώρα στην έννοια της κλάσης πολυπλοκότητας (complexity
class). Μια κλάση πολυπλοκότητας δεν είναι τίποτε άλλο παρά ένα σύνολο γλωσσών
με κοινές ιδιότητες. Υπάρχουν διάφορες παράμετροι που προσδιορίζουν μια κλάση
πολυπλοκότητας. Κατ' αρχήν το μοντέλο του υπολογισμού. Έχουμε ήδη
συμφωνήσει ότι θα χρησιμοποιούμε τη μηχανή Turing -ταινιών. Μια κλάση
πολυπλοκότητας χαρακτηρίζεται επίσης από τον τρόπο του υπολογισμού,
δηλαδή αν η μηχανή μας θα είναι ντετερμινιστική ή μη. Μια ακόμα παράμετρος
είναι ο υπολογιστικός πόρος που θέλουμε να μετρήσουμε, δηλαδή τον χρόνο
ή το χώρο της μηχανής Turing και τέλος, πρέπει να καθορίσουμε ένα φράγμα
για τον υπολογισμό, δηλαδή μια συνάρτηση
. Με βάση τα
παραπάνω, μια κλάση πολυπλοκότητας ορίζεται ως εξής:
Ορισμός 15
Μια κλάση πολυπλοκότητας είναι το σύνολο των γλωσσών που αποφασίζονται από μια
μηχανή Turing -ταινιών που λειτουργεί με τον κατάλληλο τρόπο
(ντετερμινιστικά ή μη) έτσι ώστε, για οποιαδήποτε είσοδο
, η μηχανή να
χρειάζεται το πολύ
μονάδες υπολογιστικού πόρου (χρόνου ή χώρου), όπου
είναι η συνάρτηση πολυπλοκότητας της μηχανής.
Ορίζουμε στη συνέχεια τέσσερεις γενικές κλάσεις πολυπλοκότητας, λαμβάνοντας
υπόψη μας κάθε φορά τον τρόπο του υπολογισμού και τον υπολογιστικό πόρο που
θέλουμε να μετρήσουμε:
Ορίζουμε σαν TIME το σύνολο των γλωσσών που αποφασίζονται από
κάποια ντετερμινιστική μηχανή Turing με πολυπλοκότητα χρόνου
.
Ορίζουμε σαν NTIME$το σύνολο των γλωσσών που αποφασίζονται από
κάποια μη ντετερμινιστική μηχανή Turing με πολυπλοκότητα χρόνου
.
Ορίζουμε σαν SPACE το σύνολο των γλωσσών που αποφασίζονται από
κάποια ντετερμινιστική μηχανή Turing με πολυπλοκότητα χώρου
.
Ορίζουμε σαν NSPACE το σύνολο των γλωσσών
που αποφασίζονται
από κάποια μη ντετερμινιστική μηχανή Turing με πολυπλοκότητα χώρου
.
Ας δούμε κάποιες απλές σχέσεις που συνδέουν τις κλάσεις πολυπλοκότητας που
μόλις ορίσαμε. Μπορούμε εύκολα να δούμε ότι
TIME NTIME
και
SPACE
NSPACE
.
Επίσης, σύμφωνα με το Θεώρημα 6,
TIMETIME
.
Τέλος, μια ντετερμινιστική μηχανή Τuring πολυπλοκότητας χρόνου δεν
είναι δυνατό να χρησιμοποιήσει παραπάνω από
κύτταρα, άρα
TIME
SPACE
.
Υπάρχουν καποίες αρκετά σημαντικές κλάσεις πολυπλοκότητας, όπως η κλάση , το
σύνολο όλων των γλωσσών που μπορούν να αποφασιστούν από μια ντετερμινιστική
μηχανή Turing
με πολυπλοκότητα χρόνου
, όπου
θετικός ακέραιος,
δηλαδή,
.
Η κλάση περιέχει τις γλώσσες που μπορούν να αποφασιστούν αποδοτικά, δηλαδή
σε χρόνο ο οποίος φράσσεται από κάποιο πολυώνυμο στο μέγεθος της εισόδου.
Μια εξίσου σημαντική κλάση είναι η κλάση , το σύνολο όλων των γλωσσών που
μπορούν να αποφασιστούν από μια μη ντετερμινιστική μηχανή Turing
με
πολυπλοκότητα χρόνυο
, όπου
θετικός ακέραιος, δηλαδή,
.
Όπως θα δούμε σε επόμενη ενότητα, η κλάση περιέχει τις γλώσσες που μπορούν
να επαληθευτούν αποδοτικά, δηλαδή υπάρχει γι' αυτές επαληθευτής (verifier) που
λειτουργεί σε χρόνο που φράσσεται από κάποιο πολυώνυμο στο μέγεθος της
εισόδου.
Προφανώς (αφού κάθε ντετερμινιστική μηχανή μπορεί
να θεωρηθεί ως μη ντετερμινιστική όπου σε κάθε βήμα της έχει μία μόνο επιλογή)
ενώ το κατά πόσο ισχύει ότι
παραμένει το σημαντικότερο
αναπάντητο πρόβλημα στην θεωρητική Επιστήμη των Υπολογιστών.
Στοιχεία από τη Λογική
Τα υπολογιστικά προβλήματα που προέρχονται από το χώρο της Λογικής παίζουν σημαντικό ρόλο στην θεωρία Πολυπλοκότητας. Είναι αρκετά εκφραστικά και χρησιμοποιούνται για να εκφράσουν την υπολογιστική δυνατότητα σε διάφορα επίπεδα. Πολλά από τα προβλήματα αυτά θα μας απασχολήσουν στις επόμενες ενότητες. Στη συνέχεια περιγράφουμε βασικές έννοιες από τη θεωρία της Λογικής και ορίζουμε ένα από τα πιο κεντρικά προβλήματα, το πρόβλημα της ικανοποιησιμότητας λογικών εκφράσεων.
Έστω ένα πεπερασμένο σύνολο από μεταβλητές Boole
(λογικές μεταβλητές). Κάθε μεταβλητή (variable)
μπορεί να πάρει δύο δυνατές τιμές αληθείας: την τιμή ψέμα (
)
και την τιμή αλήθεια (
). Οι μεταβλητές συνδέονται μεταξύ τους μέσω
των λογικών συνδέσμων
(λογική άρνηση),
(λογικό είτε),
και
(λογικό και) για τη δημιουργία εκφράσεων Boole
λογικών εκφράσεων όπως ακριβώς συνδέονται στην άλγεβρα οι πραγματικές
μεταβλητές μέσω των
,
και
για να σχηματίσουν αριθμητικές
εκφράσεις.
O συντακτικός ορισμός μιας λογικής έκφρασης δίνεται αναδρομικά ως εξής:
Ορισμός 16
Μια λογική έκφραση μπορεί να είναι:
1. είτε μια σταθερά ή
,
2. είτε μια λογική μεταβλητή ,
3. είτε μια έκφραση της μορφής , όπου
είναι μια λογική
έκφραση,
4. είτε μια έκφραση της μορφής (), όπου
και
είναι λογικές εκφράσεις,
5.είτε έκφραση της μορφής
(), όπου
και
είναι λογικές εκφράσεις.
Η έκφραση καλείται άρνηση της
. Σύμφωνα με τον ορισμό,
σε μια λογική έκφραση
κάθε μεταβλητή
μπορεί να έχει είτε
θετική (
) είτε αρνητική εμφανίση (
(ή
)). Κάθε
προσημασμένη μεταβλητή καλείται άτομο(literal). H έκφραση
καλείται διάζευξη (disjunction) των
και
ενώ η
έκφραση
καλείται σύζευξη (conjunction) αυτών.
Μήκος της λογικής έκφρασης
καλείται το πλήθος των ατόμων που
εμφανίζονται σε αυτήν.
Παράδειγμα 1
Η είναι μια λογική έκφραση
ορισμένη στις μεταβλητές
.
Εκτός από την συντακτική μορφή μιας λογικής έκφρασης, αυτό που πρέπει επίσης
να ορίσουμε είναι η σημαντική της (semantics), δηλαδή η σημασία της. Μια
λογική έκφραση μπορεί να είναι ψευδής ή αληθής ( ή
) ανάλογα με το αν οι
μεταβλητές που εμφανίζονται σε αυτήν είναι αληθείς ή ψευδείς. Ο ορισμός της
σημαντικής μιας λογικής έκφρασης είναι επαγωγικός: ξεκινάμε από τις
τιμές των μεταβλητών και στη συνέχεια συνθέτουμε απλές εκφράσεις με λογικούς
συνδέσμους για να σχηματίσουμε πιο σύνθετες. Η τελική τιμή της λογικής
έκφρασης προκύπτει σύμφωνα με τον ορισμό των λογικών συνδέσμων που δίνεται
στον Πίνακα 2.
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
---|---|---|---|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Πίνακας 2 Ορισμοί λογικών συνδέσμων
Ορισμός 17
Έστω μια λογική έκφραση που ορίζετε στο σύνολο των μεταβλητών
. Μια αποτίμηση αλήθειας (truth assignment)
της
είναι μια απεικόνιση
.
Αν είναι μια αποτίμηση αλήθειας της
, γράφουμε
(
)
για να δηλώσουμε ότι η
αποδίδει την τιμή
(αντίστοιχα,
) στη
μεταβλητή
. Επίσης, συμβολίζουμε με
την τιμή που παίρνει η
μέσω της
.
Ορισμός 18
Έστω μια λογική έκφραση που ορίζεται στο σύνολο
και έστω
μια
αποτίμηση αλήθειας της
. Θα λέμε ότι η
ικανοποιεί (satisfies)
την
(
) εάν ισχύουν τα παρακάτω:
\begin{enumerate}
1. Αν η
είναι μια μεταβλητή
, τότε
αν
.
2. Αν , τότε
αν
.
3. Αν , τότε
αν
ή
.
4. Αν , τότε
αν
και
.
Παράδειγμα 2
Η αποτίμηση αλήθειας για την οποία
και
δεν
ικανοποιεί τη λογική έκφραση
.
Ωστόσο, η αποτίμηση αλήθειας
με
και
,
ικανοποιεί την
.
Ορισμός 19
Για δύο λογικές εκφράσεις και
με σύνολο μεταβλητών
, θα
λέμε ότι η
συνεπάγεται την
(
)
εάν κάθε αποτίμηση αληθείας που ικανοποιεί την
ικανοποιεί και την
.
Ορισμός 20
θα λέμε ότι δύο λογικές εκφράσεις και
με σύνολο μεταβλητών
είναι ισοδύναμες (
) εάν
και
Δύο ισοδύναμες λογικές εκφράσεις μπορούν να θεωρηθούν ως διαφορετικές αναπαραστάσεις του ιδίου πράγματος και να χρησιμοποιηθούν εναλλακτικά κατά περίπτωση.
Υπάρχουν δύο ακόμα λογικοί σύνδεσμοι: o λογική συνεπαγωγή
και o
λογική ισοδυναμία. Οι ορισμοί
τους φαίνονται στον Πίνακα 2. Για τους συνδέσμους αυτούς
ισχύει ότι:
\\
Για τους λογικούς συνδέσμους ισχύουν βασικές ιδιότητες όπως η αντιμεταθετική
και η προσεταιριστική ιδιότητα, αντίστοιχες με αυτές που ισχύουν για τους
αριθμητικούς τελεστές. Οι ιδιότητες αυτές αναφέρονται στον Πίνακα 3
και δίνουν την δυνατότητα της απλούστερης γραφικής
αναπαράστασης μιας λογικής έκφρασης.
Παράδειγμα 3
Η λογική έκφραση
γράφεται πιο απλά ως
.
(1) | ![]() |
|
(2) | ![]() |
αντιμεταθετικότητα |
(3) | ![]() |
διπλή άρνηση |
(4) | ![]() |
|
(5) | ![]() |
προσεταιριστικότητα |
(6) | ![]() |
|
(7) | ![]() |
μεταβατικότητα |
(8) | ![]() |
|
(9) | ![]() |
κανόνας De Morgan |
(10) | ![]() |
|
(11) | ![]() |
αυτοδυναμία |
(12) | ![]() |
|
(13) | ![]() |
απορρόφηση |
Πίνακας 3 . Ιδιότητες λογικών συνδέσμων.
Επιπλέον, οι ιδιότητες του Πίνακα 3 μας δίνουν τη
δυνατότητα της ισοδύναμης γραφής μιας λογικής έκφρασης σε πιο βολικές,
κανονικές μορφές. Οι κανονικές μορφές που χρησιμοποιούνται ευρέως στην
προτασιακό λογισμό είναι η συζευκτική κανονίκη μορφή (conjunctive normal
form, CNF) και η διαζευκτική κανονική μορφή (disjunctive normal form,
DNF):
Ορισμός 21 (Συζευκτική Κανονική Μορφή)
Μια λογική έκφραση είναι σε συζευκτική κανονική μορφή εάν
όπου
, είναι η διάζευξη ενός ή περισσοτέρων ατόμων της
.
Ορισμός 22 (Διαζευκτική Κανονική Μορφή)
Μια λογική έκφραση είναι σε διαζευκτική κανονική μορφή εάν
,
όπου
, είναι η σύζευξη ενός ή περισσοτέρων ατόμων της
.
Κάθε καλείται πρόταση (clause) της
ενώ κάθε
καλείται
όρος (term) αυτής. Αν η
είναι σε συζευκτική κανονική μορφή, τότε
για κάθε πρόταση
αυτής ισχυει ότι
. Αν η
είναι
σε διαζευκτική κανονική μορφή, τότε για κάθε όρο
αυτής ισχύει ότι
.
Θεώρημα 7
Κάθε λογική έκφραση $$ είναι ισοδύναμη με μια λογική έκφραση σε συζευκτική
κανονική μορφή και με μια άλλη λογική έκφραση σε διαζευκτική κανονική μορφή.
Απόδειξη Η απόδειξη γίνεται με επαγωγή στη συντακτική δομή της .
-
. Η πρόταση είναι αληθής (τετριμμένη περίπτωση) .
-
. Ας κάνουμε την επαγωγική υπόθεση ότι έχουμε
μετατρέψει την σε διαζευκτική κανονική μορφή με όρους
.
Οπότε,
και με εφαρμογή του κανόνα De Morgan,
.
Αλλά κάθε όρος
είναι της μορφής
, οπότε αν εφαρμόσουμε
πάλι τον κανόνα De Morgan έχουμε ότι
.
Αν τότε εφαρμόσουμε την μεταβατική ιδιότητα στις προτάσεις της
, είναι φανερό ότι η
γράφεται σε
διαζευκτική κανονική μορφή.
Με τον ίδιο τρόπο μπορούμε να αποδείξουμε ότι η γράφεται σε συζευκτική
κανονική μορφή, αν κάνουμε την υπόθεση ότι η
είναι σε συζευκτική
κανονική μορφή.
-
. Αν υποθέσουμε ότι οι
και
είναι σε διαζευκτική κανονική μορφή, τότε και η είναι σε διαζευκτική
κανονική μορφή.
Ας υποθέσουμε τώρα ότι οι και
είναι σε συζευκτική κανονική
μορφή, δηλαδή έστω ότι
και
. Αν εφαρμόσουμε στην
την μεταβατική ιδιότητα, είναι εύκολο να δούμε ότι η
ισούται με
την σύζευξη
προτάσεων, δηλαδή γράφεται σε ισοδύναμη συζευκτική
κανονική μορφή.
-
. Προκύπτει με τρόπο συμμετρικό ως προς την
προηγούμενη περίπτωση.
Εάν κάθε πρόταση μιας λογικής έκφρασης περιέχει
άτομα, τότε η
είναι σε
-CNF. Ομοίως, εάν κάθε όρος μιας λογικής έκφρασης
περιέχει
άτομα, τότε η
είναι σε
-DNF. Ιδιαίτερο ενδιαφέρον
παρουσιάζουν λογικές εκφράσεις σε
-CNF. Μια πρόταση είναι Horn εάν σε
αυτήν εμφανίζεται ένα το πολύ θετικό άτομο. Σύμφωνα με τον ορισμό, μια πρόταση
Horn είτε περιέχει μόνο αρνητικά άτομα (είναι πλήρως αρνητική) είτε
περιέχει ακριβώς ένα θετικό άτομο (είναι συνεπαγωγή, αφού η
$
$
γράφεται ισοδύναμα ως
).
Μια έκφραση Horn είναι μια έκφραση σε CNF όπου όλες οι προτάσεις
της είναι τύπου Horn. Η συμμετρική περίπτωση της πρότασης Horn είναι η antiHorn
πρόταση όπου περιέχει ένα το πολύ αρνητικό άτομο. Αντίστοιχος είναι
ο ορισμός της antiHorn έκφρασης.
Μια άλλη μορφή αναπαράστασης μιας λογικής έκφρασης είναι μέσω πολυωνύμων στο
υποχώρο . Ένα σύστημα εξισώσεων της μορφής
όπου
είναι ένας δυαδικός πίνακας,
είναι ένα δυαδικό διάνυσμα και
είναι
ένα διάνυσμα μεταβλητών καλείται αφινική λογική έκφραση ή λογική έκφραση
αποκλειστικού είτε. To αποκλειστικό είτε (
) δύο λογικών
μεταβλητών
και
ορίζεται ως
(δες Πίνακα 2. Μπορούμε να
θεωρήσουμε ένα τέτοιο σύστημα σαν την σύζευξη <<προτάσεων>>, όπου προτάσεις
είναι οι εξισώσεις του συστήματος. Η έκφραση
καλείται
αποκλειστική διάζευξη των
και
. Μια αποτίμηση αλήθειας
που ικανοποιεί μια αφινική λογική έκφραση είναι ένα δυαδικό διάνυσμα που
ικανοποιεί κάθε πολυώνυμο του συστήματος.
Περνάμε τώρα σε μια άλλη σημαντική έννοια, αυτή της ικανοποιησιμότητας μιας
λογικής έκφρασης.
Ορισμός 23
Μια λογική έκφραση καλείται ικανοποιήσιμη (satisfiable) αν
υπάρχει αποτίμηση αλήθειας που να την ικανοποιεί. Διαφορετικά, η
καλείται μη ικανοποιήσιμη (unsatisfiable).
Εάν η ικανοποιείται από όλες τις δυνατές αποτιμήσεις αληθείας, τότε η
καλείται ταυτολογία (tautology) ή έγκυρη (valid).
Πρόταση 8
Μια λογική έκφραση είναι μη ικανοποιήσιμη αν και μόνο αν η άρνηση της είναι ταυτολογία.
Απόδειξη Έστω ότι η λογική έκφραση είναι μη ικανοποιήσιμη, δηλαδή
για κάθε αποτίμηση αλήθειας
. Τότε,
για κάθε
. ʼΑρα η
είναι ταυτολογία.
Αν, αντίστροφα, για κάθε αποτίμηση αλήθειας
, τότε
για κάθε
, δηλαδή,
για κάθε
. ʼΑρα η
είναι μη ικανοποιήσιμη.
Παράδειγμα 4
Η λογική έκφραση
είναι ικανοποιήσιμη αφού ικανοποιείται από την αποτίμηση αληθείας
για την
οποία
.
Η λογική έκφραση
είναι μη
ικανοποιήσιμη. Συνεπώς, η
είναι ταυτολογία.
Το πρόβλημα της ικανοποιησιμότητας μιας λογικής εκφράσης ορίζεται ως εξής:
ΙΚΑΝΟΠΟΙΗΣΙΜΟΤΗΤΑ (SATISFIABILITY , SAT)
Στιγμιότυπο Λογική έκφραση σε CNF, ορισμένη σε
μεταβλητές με
προτάσεις.
Ερώτημα Είναι η ικανοποιήσιμη;
Σε μορφή γλώσσας, το πρόβλημα της ικανοποιησιμότητας ορίζεται ως
η λογική έκφραση
είναι ικανοποιήσιμη.
Στον τυπικό ορισμό του προβλήματος της ικανοποιησιμότητας, η λογική
έκφραση δίνεται σε CNF. Είναι φανερό ότι αυτή η απαίτηση δεν είναι
περιοριστική αφού κάθε λογική έκφραση μπορεί να γραφεί σε μια ισοδύναμη CNF.
Επίσης, αυτή η ειδική μορφή εκφράζει πλήρως την πολυπλοκότητα του προβλήματος.
Ενδιαφέρουσες περιπτώσεις του προβλήματος της ικανοποιησιμότητας είναι οι
περιπτώσεις όπου η λογική έκφραση είναι σε -CNF (
-SAT), είναι
-CNF (
-SAT), είναι
-CNF (
-SAT), είναι Horn (HORN-SAT)
ή αντι-Horn (ANTIHORN-SAT) και αφινική (AFFINE-SAT).
Το πρόβλημα της ικανοποιησιμότητας μιας λογικής έκφρασης με
μεταβλητές μπορεί να λυθεί από έναν εξαντλητικό αλγόριθμο μετά από εκθετικό
αριθμό βημάτων
. Ο αλγόριθμος αυτός εξετάζει εάν κάθε δυνατή
αποτίμηση αλήθειας
ικανοποιεί την
. Ωστόσο, το SAT μπορεί να
λυθεί πολυωνυμικά από έναν μη ντετερμινιστικό αλγόριθμο ο οποίος
μαντεύει μια αποτίμηση αληθείας
και σε πολυωνυμικό χρόνο επαληθεύει εάν η
ικανοποιεί κάθε πρόταση της
. Όπως θα δούμε σε επόμενα μαθήματα, το
SAT ανήκει στην κλάση NP, την κλάση των προβλημάτων απόφανσης που
μπορούν να αποφασιστούν από έναν μη ντετερμινιστικό αλγόριθμο σε πολυωνυμικό
χρόνο. Υπάρχουν ωστόσο ειδικές περιπτώσεις του SAT, όπως π.χ., το
-SAT και το HORNSAT που λύνονται ντετερμινιστικά σε πολυωνυμικό
χρόνο, ανήκουν δηλαδή στην κλάση P.
Προβλήματα στη κλάση ΝΡ
Έχουμε ορίσει την κλάση NP ως το σύνολο των γλωσσών που μπορούν να αποφασιστούν από μια μη ντετερμινιστική μηχανή Turing σε πολυωνυμικό χρόνο. Στην παρούσα ενότητα δίνουμε έναν εναλλακτικό τρόπο θεώρησης της κλάσης NP: η κλάση των προβλημάτων που έχουν πολυωνυμικού χρόνου επαληθευτή. Ξεκινάμε με ένα βασικό ορισμό.
Ορισμός 24
Έστω η δυαδική σχέση . Η σχέση
καλείται πολυωνυμικά αποφασίσιμη αν υπάρχει ντετερμινιστική μηχανή
Turing η οποία αποφασίζει τη γλώσσα
σε πολυωνυμικό
χρόνο. Επίσης, η σχέση
καλείται πολυωνυμικά ισορροπημένη αν
συνεπάγεται ότι
για κάποιο
(δηλαδή το μήκος του
είναι πολυωνυμικά μεγαλύτερο από το μήκος του
).
Θα διατυπώσουμε τώρα και θα αποδείξουμε μια πρόταση που χαρακτηρίζει την κλάση
NP.
Πρόταση 9
Έστω μια γλώσσα . Η
ανήκει στην κλάση NP αν
και μόνο αν υπάρχει μια πολυωνυμικά αποφασίσιμη και πολυωνυμικά ισορροπημένη
σχέση
τέτοια ώστε
για κάποιο
.
Απόδειξη Έστω ότι . Τότε υπάρχει μη ντετερμινιστική μηχανή
Turing, έστω
, που αποφασίζει τη γλώσσα
σε χρόνο
, για κάποιο
. Ορίζουμε την εξής σχέση
:
αν και μόνο αν το
είναι η κωδικοποίηση ενός <<ΝΑΙ>> υπολογισμού της
με είσοδο
. H
είναι πολυωνυμικά ισορροπημένη αφού
. Επίσης, η
είναι και
πολυωνυμικά αποφασίσιμη αφού σε χρόνο γραμμικό στο
μπορούμε να ελέγξουμε
(επαληθεύσουμε) αν το
αντιστοιχεί στην κωδικοποίηση ενός "ΝΑΙ"
υπολογισμού της
με είσοδο
. Συνεπώς, αφού η
αποφασίζει την
, θα
είναι
για κάποιο
.
Αντίστροφα τώρα, έστω ότι υπάρχει μια πολυωνυμικά αποφασίσιμη και πολυωνυμικά
ισορροπημένη σχέση τέτοια ώστε
για κάποιο
.
Αφού η
είναι πολυωνυμικά αποφασίσιμη θα υπάρχει ντετερμινιστική
μηχανή Turing, έστω
, που αποφασίζει τη γλώσσα
σε πολυωνυμικό χρόνο. Επίσης, αφού η
είναι πολυωνυμικά ισορροπημένη
θα ισχύει ότι
για κάποιο
.
Κατασκευάζουμε μη ντετεμινιστική μηχανή Turing
η οποία με είσοδο
,
αρχικά μαντεύει μια συμβολοσειρά
μήκους
και στη συνέχεια καλεί την
για να αποφασίζει αν
. Αν
(δηλαδή
),
τότε η
αποδέχεται την είσοδο
, διαφορετικά την απορρίπτει. Είναι
φανερό ότι η
αποφασίζει την
, άρα
.
Η μηχανή που κατασκευάσαμε ένας επαληθευτής πολυωνυμικού χρόνου
για τη γλώσσα
. Για κάθε
, αρκεί να μαντέψουμε ένα
με μήκος πολυωνυμικά μεγαλύτερο από το μήκος του
, και στη συνέχεια
χρησιμοποιώντας αυτό το
μπορούμε σε πολυωνυμικό χρόνο, ντετερμινιστικά
πλέον, να επαληθεύσουμε ότι πράγματι
. Έτσι, κάθε πρόβλημα
στην κλάση NP έχει την εξής ιδιότητα: για κάθε "ΝΑΙ" στιγμιότυπο
υπάρχει τουλάχιστον ένα σύντομο πιστοποιητικό
το οποίο
πιστοποιεί ότι το
είναι πράγματι ένα "ΝΑΙ" στιγμιότυπο του
προβλήματος. Η τεχνική "μαντέυω και επαληθεύω" είναι αυτή που θα
χρησιμοποιούμε απ' εδώ και στο εξής για να αποδεικνύουμε ότι ένα πρόβλημα
ανήκει στην κλάση NP.
Στην συνέχεια δίνουμε τη μεθοδολογία που θα πρέπει να ακολουθούμε για να
αποδεικνύουμε ότι ένα πρόβλημα ανήκει στην κλάση NP. Η μεθοδολογία αυτή
βασίζεται στην ύπαρξη επαληθευτή πολυωνυμικού χρόνου για κάθε πρόβλημα που
ανήκει στην κλάση NP. Δηλαδή, για κάθε "ΝΑΙ" στιγμιότυπο του
προβλήματος, υπάρχει τουλάχιστον ένα σύντομο πιστοποιητικό
το
οποίο πιστοποιεί ότι το
είναι πράγματι ένα "ΝΑΙ" στιγμιότυπο.
Έτσι, για να αποδείξουμε ότι ένα πρόβλημα ανήκει στην κλάση NP θα εφαρμόζουμε
την μέθοδο "μαντεύω και επαληθεύω", ως εξής:
1. Μαντεύουμε ένα σύντομο πιστοποιητικό . Προσοχή, το
πρέπει να
είναι πολυωνυμικά μεγαλύτερο από το
.
2. Επαληθεύουμε, χρησιμοποιώντας το , ότι το
είναι ένα "ΝΑΙ"
στιγμιότυπο του προβλήματος. Προσοχή, η επαλήθευση πρέπει να γίνεται σε χρόνο
πολυωνυμικό στο μέγεθος του
.
Για παράδειγμα, το πρόβλημα της ικανοποιησιμότητας Λογικών εκφράσεων
(ΙΚΑΝΟΠΟΙΗΣΙΜΟΤΗΤΑ, SAT) ανήκει στην κλάση NP. Η απόδειξη είναι ως
εξής: Έστω ένα τυχαίο στιγμιότυπο της ΙΚΑΝΟΠΟΙΗΣΙΜΟΤΗΤΑΣ (Λογική
έκφραση
σε συζευκτική κανονική μορφή, ορισμένη σε
μεταβλητές, με
προτάσεις). Το μήκος του
χαρακτηρίζει το πλήθος
των μεταβλητών
στις οποίες ορίζεται η λογική έκφραση
(είναι ένα πολυώνυμο του
).
Μαντεύουμε μια αποτίμηση αληθείας
στις
μεταβλητές της
(η
είναι το πιστοποιητικό
και έχει μήκος
) και επαληθεύουμε σε γραμμικό
χρόνο στο μήκος της
(άρα σε χρόνο πολυωνυμικό στο
) ότι η
ικανοποιεί την
(δηλαδή ότι το
είναι ένα "ΝΑΙ" στιγμιότυπο του
προβλήματος της (ΙΚΑΝΟΠΟΙΗΣΙΜΟΤΗΤΑΣ).
Να σημειώσουμε εδώ ότι όσο κι αν φαίνεται απλό, δεν είναι πάντα εύκολο να
δείξει κανείς ότι ένα πρόβλημα ανήκει στην κλάση NP. Παράδειγμα ενός τέτοιου
προβλήματος, το οποίο δεν γνωρίζουμε αν ανήκει στην κλάση NP, είναι το
-ΟΣΤΟ ΜΕΓΑΛΥΤΕΡΟ ΥΠΟΣΥΝΟΛΟ (
-th LARGEST SUBSET)[GJ79]
Πληρότητα κατά ΝΡ
Στην παρούσα ενότητα περιγράφουμε τα βήματα που πρέπει να ακολουθούμε κάθε φορά για να αποδεικνύουμε ότι ένα πρόβλημα είναι NP-πλήρες.
Σύμφωνα με τον Ορισμό 4.2,\footnote{Παραπέμπουμε σε ορισμούς, λήμματα, κ.α.
από το σύγγραμμα διδασκαλίας.} ένα πρόβλημα είναι πλήρες για την
κλάση NP αν (i) ανήκει στην κλάση NP και (ii) κάθε πρόβλημα
' της κλασης
NP ανάγεται αποδοτικά σε αυτό, δηλαδή
'
. Θυμίζουμε
τον ορισμό (Ορισμός 4.1) της αποδοτικής αναγωγής μεταξύ δύο προβλημάτων
(γλωσσών): Η γλώσσα
ανάγεται αποδοτικά στη γλώσσα
αν υπάρχει
συνάρτηση
η οποία υπολογίζεται από μια
μηχανή Turing με είσοδο και έξοδο σε λογαριθμικό χώρο, τέτοια ώστε
αν και μόνο αν
. Με άλλα λόγια, το
είναι ένα "ΝΑΙ"
στιγμιότυπο του προβλήματος
' αν και μόνο αν το
είναι ένα "ΝΑΙ"
στιγμιότυπο του προβλήματος
.
Για να αποδεικνύουμε ότι ένα πρόβλημα είναι NP-πλήρες θα εφαρμόζουμε το
Λήμμα 4.3: κατ' αρχήν θα δείχνουμε ότι το πρόβλημα ανήκει στην κλάση NP και
στη συνέχεια θα ανάγουμε ένα γνωστό NP-πλήρες πρόβλημα, έστω το
', στο
. Πιο αναλυτικά, τα βήματα που θα ακολουθούμε είναι τα εξής:
1. Δείχνουμε ότι το ανήκει στην κλάση NP, μέσω της μεθόδου
μάντεψε και επαλήθευσε.
2. Επιλέγουμε ένα γνωστό NP-πλήρες πρόβλημα, έστω το '.
3. Κατασκευάζουμε αναγωγή που μετασχηματίζει κάθε τυχαίο στιγμιότυπο
του προβλήματος
' σε νόμιμο στιγμιότυπο
του προβλήματος
.
4. Δείχνουμε ότι η αναγωγή είναι ορθή, δηλαδή ότι το είναι ένα "ΝΑΙ"
στιγμιότυπο του προβλήματος
' αν και μόνο αν το
είναι ένα "ΝΑΙ"
στιγμιότυπο του προβλήματος
.
5. Δείχνουμε ότι η αναγωγή είναι αποδοτική, δηλαδή είναι αναγωγή λογαριθμικού χώρου.
Έχουμε περιγράψει τη μέθοδο "μάντεψε και επαλήθευσε", που θα χρησιμοποιούμε
στο 1ο βήμα, σε προηγούμενη ενότητα. Τις περισσότες φορές είναι εύκολο να
δείξουμε ότι ένα πρόβλημα στην κλάση NP (προσοχή, υπάρχουν πολλές περιπτώσεις
που αυτό δεν ισχύει).
Το 2ο βήμα απαιτεί την επιλογή ενός κατάλληλου NP-πλήρους προβλήματος. Η επιλογή αυτή απαιτεί εμπειρία και εξοικείωση με τις αναγωγές. Αν το προς απόδειξη NP-πλήρες πρόβλημα δεν κατευθύνει στην επιλογή του κατάλληλου προβλήματος, η καλύτερη επιλογή είναι να χρησιμοποιηθεί το πρόβλημα της 3ΙΚΑΝΟΠΟΙΗΣΙΜΟΤΗΤΑΣ (3SAT).
Όσο αφορά στον τρόπο κατασκευής της αναγωγής (3ο βήμα), και εδώ απαιτείται εμπειρία, εξοικίωση αλλά και διαίσθηση. Θα μπορούσαμε να κατηγοριοποιήσουμε τους πιθανούς τρόπους κατασκευής σε τρεις βασικές κατηγορίες: (i) την ειδική περίπτωση, (ii) την τοπική αντικατάσταση, και (iii) την κατασκευή σκαριφημάτων. Τις τεχνικές αυτές έχουμε ήδη χρησιμοποιήσει και θα χρησιμοποιήσουμε στην κατασκευή αρκετών αναγωγών. Μπορείτε να βρείτε περισσότερα στοιχεία για αυτές στην Ενότητα 5.5.
Στο 4ο βήμα πρέπει να προσέξουμε στην απόδειξη της αρθότητας της αναγωγής:
πρέπει να αποδειχθεί και το ευθύ αλλά και το αντίστροφο. Τέλος, στο 5ο βήμα
αρκεί να αποδείξουμε ότι το μέγεθος του στιγμιότυπου που κατασκευάσαμε
είναι πολυωνυμικά μεγαλύτερο από το μέγεθος του
.
ΝΡ-πλήρη προβλήματα
Συνεχίζουμε τη μελέτη προβλημάτων που είναι πλήρη για την κλάση NP παρουσιάζοντας δυο ακόμα παραλλαγές του προβλήματος της ικανοποιησιμότητας.
Οριζουμε το πρόβλημα της ΜΕΓΙΣΤΗΣ 2-ΙΚΑΝΟΠΟΙΗΣΙΜΟΤΗΤΑΣ (MAX2SAT) ως
εξής: Δίνεται Λογική έκφραση σε 2ΣΚΜ, ορισμένη σε
μεταβλητές, με
προτάσεις, και θετικός ακέραιος
. Υπάρχει αποτίμηση αλήθειας η
οποία να ικανοποιεί τουλάχιστον
προτάσεις της
;
Είναι φανερό ότι το MAX2SAT αποτελεί γενίκευση του προβλήματος
2SAT αφού το 2SAT προκύπτει από το MAX2SAT αν
θέσουμε . Το γεγονός αυτό ωστόσο δεν προσδιορίζει τη δυσκολία επίλυσης
του γενικού προβλήματος αφού το ειδικό πρόβλημα επιλύεται αποδοτικά (είναι
P-πλήρες), σε αντίθεση με τα ήδη γνωστά προβλήματα MAXSAT και
SAT. Θα δείξουμε ότι το MAX2SAT είναι NP-πλήρες.
Το max2sat προφανώς ανήκει στην κλάση NP αφού για οποιαδήποτε Λογική
έκφραση μπορούμε να μαντέψουμε μια αποτίμηση αλήθειας
για τις
μεταβλητές της
και σε πολυωνυμικό χρόνο να επαληθεύσουμε ότι η
ικανοποιεί την
.
Στη συνέχεια θα ανάγουμε το ήδη γνωστό NP-πλήρες πρόβλημα 3SAT στο
MAX2SAT. Έστω ένα τυχαίο στιγμιότυπο του 3SAT: Λογική
έκφραση
σε 3ΣΚΜ, ορισμένη στις
μεταβλητές
, με
προτάσεις. Κάθε πρόταση της
είναι στη μορφή
,
όπου
ή
.
Θα κατασκευάσουμε στιγμιότυπο του MAX2SAT, δηλαδή Λογική έκφραση
' σε 2ΣΚΜ, ορισμένη σε
' μεταβλητές, με
' προτάσεις, και θετικό
ακέραιο
', έτσι ώστε: η
είναι ικανοποιήσιμη αν και μόνο αν
υπάρχει αποτίμηση αλήθειας που ικανοποιεί τουλάχιστον
προτάσεις της
'.
Ας θεωρήσουμε κατ' αρχήν τις εξής δέκα προτάσεις:
Παρατηρούμε ότι οι προτάσεις αυτές είναι συμμετρικές ως προς τις μεταβλητές
αλλά όχι ως προς την
. Επίσης παρατηρούμε ότι δεν είναι δυνατόν
να ικανοποιηθούν ταυτόχρονα και οι δέκα προτάσεις. Ας δούμε πόσες το πολύ
προτάσεις είναι δυνατό να ικανοποιηθούν:
- Έστω ότι και οι τρεις μεταβλητές
είναι αληθείς. Τότε οι
προτάσεις τις 2ης σειράς είναι όλες ψευδείς και το μόνο που μπορούμε να
κάνουμε είναι να θέσουμε αληθή και την μεταβλητή ώστε όλες οι προτάσεις
της 1ης γραμμής να είναι αληθείς. Συνεπώς το πολύ επτά προτάσεις μπορούν να
ικανοποιηθούν.
- Έστω ότι δύο από τις μεταβλητές
είναι αληθείς και η τρίτη
είναι ψευδής. Τότε δυό προτάσεις από κάθε σειρά είναι αληθείς ενώ μπορούμε
κάνουμε αληθή μια ακόμα πρόταση από την 1η ή την 3η σειρά θέτοντας αληθή (ή
ψευδή, αντίσοτιχα, τη μεταβλητή . ʼAρα και σε αυτή την περίπτωση το πολύ
επτά προτάσεις μπορούν να ικανοποιηθούν.
- Έστω ότι μία μόνο απο τις
είναι αληθής ενώ οπι υπόλοιπες δύο
είναι ψευδής. Οι προτάσεις τις 2ης σειράς είναι αληθείς ενώ αν θέσουμε ψευδή
τη μεταβλητή μπορούμε να ικανοποιήσουμε και τις τρεις προτάσεις της 3ης
σειράς. ʼAρα και σε αυτή την περίπτωση επτά το πολύ προτάσεις μπορούν να
ικανοποιηθούν.
- Τέλος, έστω ότι και οι τρεις μεταβλητές
είναι ψευδείς. Τότε οι
τρεις προτάσεις τις 2ης σειράς είναι αληθείς ενώ θέτοντας ψευδή και τη
μεταβλητή μπορούμε να ικανοποιήσουμε και τις τρεις προτάσεις της 3ης
σειράς. Συνεπώς, σε αυτή την περίπτωση μπορούν το πολύ έξι προτάσεις να
ικανοποιηθούν.
Συνοψίζοντας, οι παραπάνω δέκα προτάσεις έχουν την εξής ιδιότητα: οποιαδήποτε
αποτίμηση αλήθειας (από τις ) που ικανοποιεί την πρόταση
μπορεί να επεκταθεί έτσι ώστε να ικανοποιεί το πολύ επτά από τις δέκα
προτάσεις ενώ η όγδοη αποτίμηση αληθείας (που δεν ικανοποιεί την
))
αν επεκταθεί μπορεί να ικανοποιήσει το πολύ έξι απο τις δέκα
προτάσεις.
Η ιδιότητα αυτή προτείνει μια άμεση αναγωγή από το 3SAT στο
MAX2SAT: Για κάθε πρόταση
της
προσθέτουμε στη
' μια ομάδα από δέκα προτάσεις όπως
προηγουμένως, όπου τη θέση των
παίρνουν τα
και τη θέση της
παίρνει η νέα βοηθητική μεταβλητή
. Έτσι, η
' αποτελείτε συνολικά από
προτάσεις οι οποίες ορίζονται σε
μεταβλητές. Επίσης θέτουμε
. Ισχυριζόμαστε ότι η
είναι ικανοποιήσιμη αν και μόνο αν υπάρχει αποτίμηση αλήθειας που ικανοποιεί
το πολύ
προτάσεις τις
.
Έστω ότι η είναι ικανοποιήσιμη. Σϋμφωνα με την προηγούμενη συζήτηση,
κάθε αποτίμηση αλήθειας που ικανοποιεί τη
μπορεί να επεκταθεί κατάλληλα
στις μεταβλητές
, ανάλογα με τις τιμές των μεταβλητών
που συμμετέχουν στην πρόταση
, έτσι ώστε να ικανοποιεί ακριβώς επτά
προτάσεις σε κάθε ομάδα της
, δηλαδή συνολικά
προτάσεις της
. Αντίστροφα, έστω ότι υπάρχει αποτίμηση αλήθειας που ικανοποιεί
προτάσεις της
. Αφού σε κάθε ομάδα προτάσεων της
μπορούν να
ικανοποιηθούν το πολύ επτά προτάσεις και υπάρχουν
$ομάδες, ικανοποιούνται
ακριβώς επτά προτάσεις σε κάθε ομάδα προτάσεων της
. Μια τέτοια
αποτίμηση αλήθειας ικανοποιεί όλες τις προτάσεις της
, συνεπώς η
είναι ικανοποιήσιμη.
Για να ολοκληρώσουμε την απόδειξη της πληρότητας πρέπει να αναφέρουμε ότι η
αναγωγή που κατασκευάσαμε είναι λογαριθμικού χώρου, αφού η είναι
πολυωνυνικά μεγαλύτερη από τη
.
Στη συνέχεια ορίζουμε μια ακόμα παραλλαγή του προβλήματος της
ικανοποιησιμότητας, την HORN 2-ΙΚΑΝΟΠΟΙΗΣΙΜΟΤΗΤΑ (HORN2SAT): Δίνεται
Λογική έκφραση σε ΣΚΜ, ορισμένη σε
μεταβλητές, με
προτάσεις,
όπου κάθε πρόταση της είτε είναι τύπου Horn (περιέχει το πολύ ένα θετικό
άτομο) είτε είναι σε 2ΣΚΜ (περιέχει ακριβώς δύο άτομα). Είναι η
ικανοποιήσιμη;
Κάθε στιγμιότυπο του HORN2SAT είναι ένα μίγμα από Horn ή/και 2ΣΚΜ προτάσεις. Θα μπορούσαμε να πούμε ότι το πρόβλημα αυτό αποτελεί γενίκευση των προβλημάτων HORNSAT και 2SAT τα οποία γνωρίζουμε ότι επιλύονται αποδοτικά (είναι P-πλήρη). Ωστόσο, η μίξη αυτών "χαλάει" την καλή συμπεριφορά των δύο προβλημάτων. Θα δείξουμε ότι το HORN2SAT είναι NP-πλήρες.
Το HORN2SAT προφανώς ανήκει στην κλάση NP αφού για οποιαδήποτε
Λογική έκφραση μπορούμε να μαντέψουμε μια αποτίμηση αλήθειας
για
τις
μεταβλητές της
και σε πολυωνυμικό χρόνο να επαληθεύσουμε ότι η
ικανοποιεί την
.
Για να αποδείξουμε ότι το HORN2SAT είναι NP-πλήρες, θα ανάγουμε το
3SAT σε αυτό. Έστω ένα τυχαίο στιγμιότυπο του 3SAT:
Λογική έκφραση
σε 3ΣΚΜ, ορισμένη στις
μεταβλητές
,
με
προτάσεις. Κάθε πρόταση της
είναι στη μορφή
,
όπου $
ή
.
Θα κατασκευάσουμε στιγμιότυπο του
HORN2SAT, δηλαδή Λογική έκφραση
ορισμένη σε
μεταβλητές,
με
προτάσεις, κάθε πρόταση της οποίας είναι είτε τύπου Horn είτε σε 2ΣΚΜ,
έτσι ώστε: η
είναι ικανοποιήσιμη αν και μόνο αν η
είναι
ικανοποιήσιμη.
Η κατασκευή του στιγμιοτύπου του HORN2SAT βασίζεται στην τοπική αντικατάσταση
των προτάσεων της που δεν είναι Horn ή σε 2ΣΚΜ με ένα
σύνολο από προτάσεις στη
έτσι ώστε να διατηρείται τοπικά η
λογική ισοδυναμία. Για κάθε πρόταση της
θα προσθέσουμε στη
ένα
ισοδύναμο σύνολο από προτάσεις οι οποίες θα είναι είτε Horn είτε σε
2ΣΚΜ.
Έστω
μια τυχαία πρόταση σε 3ΣΚΜ της
. Αναφορικά
με το πρόσημο των τριών μεταβλητών που εμφανίζονται σε αυτήν, η
ανήκει
σε έναν από τους παρακάτω τέσσερις διαφορετικούς τύπους:
- Η
δεν περιέχει καμία μεταβλητή με θετικό πρόσημο. Έστω, για
παράδειγμα, .
Η
είναι μια Horn πρόταση και μπορεί να
χρησιμοποιηθεί ως ισοδύναμη πρόταση στη
. Προσθέτουμε λοιπόν την
πρόταση
στη
.
- Η
περιέχει μία μεταβλητή με θετικό πρόσημο. Έστω,
.
Όπως και στην προηγούμενη
περίπτωση, η είναι μια Horn πρόταση την οποία προσθέτουμε στη
.
- Η
περιέχει δύο μεταβλητές με θετικό πρόσημο. Έστω,
.
Η δεν είναι ούτε Horn ούτε σε
2ΣΚΜ και δεν μπορεί να προστεθεί στη
. Σε αυτή την περίπτωση
προσθέτουμε στη
το σύνολο των προτάσεων
$
$.
Οι προτάσεις αυτές είναι Horn ή σε 2ΣΚΜ και ορίζονται στις μεταβλητές που συμμετέχουν στη
αλλά και σε μια ακόμα βοηθητική μεταβλητή, την
, η οποία
εξαρτάται από τη
.\footnote{Εναλλακτικά, και για λόγους συμμετρίας, θα
μπορούσαμε να ορίσουμε το σύνολο των προτάσεων
$
$ και
να χρησιμοποιήσουμε τρεις βοηθητικές μεταβλητές.} Μπορούμε εύκολα να δούμε ότι
αν υπάρχει αποτίμηση αλήθειας στις μεταβλητές της
που ικανοποιεί τη
, τότε η αποτίμηση αυτή μπορεί να επεκταθεί έτσι ώστε να ικανοποιεί το
αντίστοιχο σύνολο προτάσεων της
. Ισχύει και το αντίστροφο.
- Η
περιέχει τρεις μεταβλητές με θετικό πρόσημο. Έστω,
. Σε αυτή την περίπτωση προσθέτουμε στη
το σύνολο των προτάσεων
.
Οι προτάσεις αυτές είναι Horn ή σε 2ΣΚΜ και ορίζονται στις
μεταβλητές που συμμετέχουν στη
αλλά και σε δύο ακόμα βοηθητικές
μεταβλητή, τις
, οι οποίες εξαρτώνται από τη
.\footnote{Εναλλακτικά, και για λόγους συμμετρίας, θα μπορούσαμε να
ορίσουμε το σύνολο των προτάσεων
$
και να χρησιμοποιήσουμε τρεις
βοηθητικές μεταβλητές.} Μπορούμε εύκολα να δούμε ότι αν υπάρχει αποτίμηση
αλήθειας στις μεταβλητές της
που ικανοποιεί τη
, τότε η αποτίμηση
αυτή μπορεί να επεκταθεί έτσι ώστε να ικανοποιεί το αντίστοιχο σύνολο
προτάσεων της
. Ισχύει και το αντίστροφο.
Η Λογική έκφραση ορίζεται σε
μεταβλητές και
αποτελείται από
προτάσεις. Ισχυριζόμαστε ότι η
είναι
ικανοποιήσιμη αν και μόνο αν η
είναι ικανοποιήσιμη.
Έστω ότι η είναι ικανοποιήσιμη. Κάθε αποτίμηση αλήθειας στις
μεταβλητές της
που ικανοποιεί τις προτασείς της
μπορεί να
επεκταθεί στις
μεταβλητές της
έτσι ώστε να ικανοποιεί και τα
αντίστοιχα σύνολα προτάσεων της
. Αντίστροφα, έστω ότι η
είναι
ικανοποιήσιμη. Για κάθε αποτίμηση αλήθειας στις μεταβλητές της
που
ικανοποιεί τη
, η αποτίμηση αληθειας που αντιστοιχεί στις
μεταβλητές της
ικανοποιεί τη
.
Για να ολοκληρώσουμε την απόδειξη της πληρότητας πρέπει να αναφέρουμε ότι η
αναγωγή που κατασκευάσαμε είναι λογαριθμικού χώρου, αφού η είναι
πολυωνυμικά μεγαλύτερη από την
.
Το συμπλήρωμα της κλάσης ΝΡ
Ορίσαμε την κλάση NP ως το σύνολο των προβλημάτων που έχουν σύντομο πιστοποιητικό. Με άλλα λόγια, για κάθε "ΝΑΙ" στιγμιότυπο ενός προβλήματος στην κλάση NP υπάρχει τουλάχιστον ένα σύντομο πιστοποιητικό το οποίο αποτελεί απόδειξη για το ότι το στιγμιότυπο αυτό είναι πράγματι ένα "ΝΑΙ" στιγμιότυπο. Το συμπλήρωμα της κλάσης NP συμβολίζεται με coNP και περιέχει τα συμπληρώματα των γλωσσών που ανήκουν στην κλάση NP. Δηλαδή, για κάθε "ΟΧΙ" στιγμιότυπο ενός προβλήματος στην κλάση coNP υπάρχει σύντομο πιστοποητικό το οποίο αποτελεί απόδειξη για το ότι το στιγμιότυπο αυτό είναι πράγματι ένα "ΟΧΙ" στιγμιότυπο. Τα παραπάνω θα γίνουν πιο κατανοητά με το ακόλουθο παράδειγμα.
Παράδειγμα Ας θεωρήσουμε το συμπλήρωμα του προβλήματος της
ΙΚΑΝΟΠΟΙΗΣΙΜΟΤΗΤΑΣ, το πρόβλημα της ΜΗ ΙΚΑΝΟΠΟΙΗΣΙΜΟΤΗΤΑΣ (UNSAT)
στο οποίο δίνεται μια Λογική έκφραση σε Συζευκτική Κανονική
Μορφή και ζητείται απάντηση στο ερώτημα αν η
είναι μη ικανοποιήσιμη. Μπορούμε εύκολα να απαντήσουμε για την άρνηση του
προβλήματος αυτού: αν η
δεν είναι μη ικανοποιήσιμη, μπορούμε να βρούμε
ένα σύντομο πιστοποιητικό που επαληθεύει το γεγονός αυτό: μια αποτίμηση
αλήθειας στις μεταβλητές της
που ικανοποιεί τη
. Κατά συνέπεια το
πρόβλημα της ΜΗ ΙΚΑΝΟΠΟΙΗΣΙΜΟΤΗΤΑΣ ανήκει στην κλάση coNP.
Το πρόβλημα της ΜΗ ΙΚΑΝΟΠΟΙΗΣΙΜΟΤΗΤΑΣ είναι μια διαφορετική διατύπωση
του προβλήματος της ΕΓΚΥΡΟΤΗΤΑΣ (VALIDITY). Να θυμηθούμε ότι μια
Λογική έκφραση είναι έγκυρη (ή ταυτολογία) αν ικανοποιείται από κάθε δυνατή
αποτίμηση αληθείας. Επίσης, είναι εύκολο να δει δείξει κανείς ότι μια Λογική
έκφραση είναι έγκυρη αν και μόνο αν η άρνηση αυτής,
, είναι
μη ικανοποιήσιμη.\footnote{Ανατρέξτε στις διδακτικές σημειώσεις $\#14$.}
Συνεπώς τα προβλήματα της ΜΗ ΙΚΑΝΟΠΟΙΗΣΙΜΟΤΗΤΑΣ και της
ΕΓΚΥΡΟΤΗΤΑΣ είναι ισοδύναμα (το πρώτο ανάγεται στο δεύτερο, και
αντίστροφα).
Είναι προφανές ότι όλα τα προβλήματα που ανήκουν στην κλάση P ανήκουν και
στην κλάση coNP αφού η ντετερμινιστική κλάση P NP
είναι κλειστή ως προς το συμπλήρωμα.
Το πρόβλημα της ΕΓΚΥΡΟΤΗΤΑΣ είναι ένα παράδειγμα ενός coNP-πλήρους
προβλήματος. Θα αποδείξουμε την πρόταση αυτή χρησιμοποιώντας τον ορισμό της
πληρότητας: θα ανάγουμε κάθε γλώσσα στην κλάση coNP στην ΕΓΚΥΡΟΤΗΤΑ.
Έστω μια γλώσσα στην κλάση coNP. Το συμπλήρωμα αυτής,
,
θα ανήκει στην κλάση NP, άρα θα υπάρχει αποδοτική αναγωγή R της
στην ΙΚΑΝΟΠΟΙΗΣΙΜΟΤΗΤΑ. Δηλαδή, για κάθε συμβολοσειρά
,
ανν η
είναι ικανοποιήσιμη. Η αναγωγή της
στην ΕΓΚΥΡΟΤΗΤΑ είναι η
. Για κάθε
συμβολοσειρά
θα αποδείξουμε ότι
ανν η
είναι έγκυρη. Η
απόδειξη είναι απλή:
ανν
ανν η
είναι μη ικανοποιήσιμη δηλαδή ανν η
είναι έγκυρη.
Η επόμενη πρόταση είναι άμεση συνέπεια των παραπάνω:
Πρόταση 10
Αν μια γλώσσα είναι NP-πλήρης, τότε το συμπλήρωμα αυτής, ,
είναι coNP-πλήρης.
Έτσι, τα συμπληρωματικά προβλήματα όλων των προβλημάτων που μέχρι τώρα έχουμε
αποδείξει ότι είναι NP-πλήρη (3 ΙΚΑΝΟΠΟΙΗΣΙΜΟΤΗΤΑ, ΜΕΓΙΣΤΗ ΙΚΑΝΟΠΟΙΗΣΙΜΟΤΗΤΑ, ΚΛΙΚΑ,
ΑΝΕΞΑΡΤΗΤΟ ΣΥΝΟΛΟ, ΚΑΛΥΜΜΑ ΚΟΡΥΦΩΝ κ.α.) είναι
coNP-πλήρη προβλήματα
Το κατά πόσο ισχύει ότι NP coNP αποτελεί ένα ακόμα
θεμελιώδες ερώτημα, όπως το ερώτημα εάν P
NP. Είναι
σαφές ότι αν P = NP τότε και NP=coNP
αφού η κλάση P είναι κλειστή ως προς το συμπλήρωμα. Πιστεύεται ότι οι κλάσεις
NP και coNP είναι διαφορετικές. Τα προβλήματα που είναι πλήρη για την κλάση
coNP είναι το λιγότερο πιθανό να ανήκουν στην κλάση P. Το λιγότερο πιθανό
για ένα coNP-πλήρες πρόβλημα είναι να ανήκει και στην κλάση NP:
Πρόταση 11
Αν μια coNP-πλήρης γλώσσα ανήκει στην κλάση NP, τότε NP=coNP.
Απόδειξη
Θα αποδείξουμε ότι αν μια γλώσσα NP είναι
coNP-πλήρης, τότε coNP
NP --- ο αντίστροφος
εγκλεισμός αποδεικνύεται συμμετρικά. Έστω μια γλώσσα
coNP.
Θα δείξουμε ότι
NP. Αφού η L ανήκει στην κλάση NP
υπάρχει πολυωνυμικού χρόνου μη ντετερμινιστική μηχανή Turing, έστω
,
που αποφασίζει την
. Επίσης, αφού η
είναι coNP-πλήρης, θα υπάρχει
αποδοτική αναγωγή
από την
στην
έτσι ώστε
.
Έστω
η λογαριθμικού χώρου (άρα και
πολυωνυμικού χρόνου) ντετερμινιστική μηχανή Turing που υπολογίζει την
.
Κατασκευάζουμε μη ντετερμινιστική μηχανή Turing
η οποία με είσοδο
αρχικά προσομοιώνει τη λειτουργία της
με είσοδο
για τον
υπολογισμό της
και στη συνέχεια προσομοιώνει τη λειτουργία της
με είσοδο
. Η
αποδέχεται την είσοδο
αν η
αποδέχεται την είσοδο
. Είναι φανερό ότι η
αποφασίζει τη
γλώσσα
σε χρόνο φραγμένο από ένα πολυώνυμο του μήκους της εισόδου της.
ʼΑρα η γλώσσα
ανήκει στην κλάση NP.
Κλείνοντας θα αποδείξουμε ένα ακόμα πλήρες πρόβλημα για την κλάση NP (οπότε
το συμπληρωματικό πρόβλημα αυτού θα είναι πλήρες για την κλάση coNP).
Πρόκειται για την 4 ΙΚΑΝΟΠΟΙΗΣΙΜΟΤΗΤΑ (4 SAT), μια ακόμα παραλλαγή του
προβλήματος της ΙΚΑΝΟΠΟΙΗΣΙΜΟΤΗΤΑΣ, όπου δίνεται μια Λογική έκφραση
σε Συζευκτική Κανονική Μορφή με κάθε πρόταση της να περιέχει προσημασμένες
μεταβλητές, και ζητείται απάντηση στο ερώτημα εάν η
είναι
ικανοποιήσιμη.
Η διαδικασία της απόδειξης της πληρότητας ενός προβλήματος για την κλάση NP
είναι πλέον γνωστή. Το πρόβλημα προφανώς ανήκει στην κλάση NP. Για την
αναγωγή θα χρησιμοποιήσουμε, τι πιο εύλογο, το πρόβλημα της
3 ΙΚΑΝΟΠΟΙΗΣΙΜΟΤΗΤΑΣ. Έστω ένα τύχαιο στιγμιότυπο της
3 ΙΚΑΝΟΠΟΙΗΣΙΜΟΤΗΤΑΣ. Θα κατασκευάσουμε στιγμιότυπο
της
4 ΙΚΑΝΟΠΟΙΗΣΙΜΟΤΗΤΑΣ έτσι ώστε η
είναι ικανοποιήσιμη αν και
μόνο αν η
είναι ικανοποιήσιμη.
Έστω , μια πρόταση
της
. Τα
,
είναι προσημασμένες μεταβλητές από το
σύνολο
. Για κάθε πρόταση
ορίζουμε τις
προτάσεις
και
,
όπου
είναι μια νέα μεταβλητή που
εξαρτάται από την
. Το σύνολο όλων αυτών των προτάσεων συνιστά την έκφραση
. Η
ορίζεται σε
μεταβλητές, αποτελείται από
προτάσεις (όπως ορίστηκαν παραπάνω) και αποτελεί ένα νόμιμο στιγμιότυπο του
προβλήματος της 4 ΙΚΑΝΟΠΟΙΗΣΙΜΟΤΗΤΑΣ.
Είναι εύκολο να δει κανείς, από τον τρόπο που κατασκευάσαμε τη , ότι η
είναι ικανοποιήσιμη αν και μόνο αν η
είναι ικανοποιήσιμη.
Επίσης, η κατασκευή της
είναι αποδοτική (απαιτεί λογαριθμικό χώρο).
Συνεπώς το πρόβλημα της 4 ΙΚΑΝΟΠΟΙΗΣΙΜΟΤΗΤΑΣ είναι NP-πλήρες.
Να σημειώσουμε εδώ ότι το παραπάνω αποτέλεσμα γενικεύεται για οποιοδήποτε
θετικό ακέραιo , κατασκευάζοντας κάθε φορά την κατάλληλη αναγωγή.
Δηλαδή το πρόβλημα της
-ΙΚΑΝΟΠΟΙΗΣΙΜΟΤΗΤΑΣ (
) είναι
NP-πλήρες.
Βιβλιογραφικές Πηγές
1.[Καβ04] Δημήτριος Ι. Καββαδίας. Υπολογιστική Πολυπλοκότητα. Φεβρουάριος 2004. Πανεπιστημιακές Παραδόσεις.
2.[GJ79] Μ. R. Garey and D. S. Johnson. Computers and Intractability: A Guide to the Theory of NP-Completeness. W. H. Freeman and Company, San Francisco, 1979.
3.[Pap94] C. H. Papadimitriou. Computational Complexity. Addison-Wesley Publishing Company, Reading, Massachusetts, 1994.
4.[Sip97] M. Sipser. Introduction to the Theory of Computation. PWS Publishing Company, Menlo Park, CA, 1997.
Αρχή της σελίδας- ↑ [Καβ04] Δημήτριος Ι. Καββαδίας. Υπολογιστική Πολυπλοκότητα. Φεβρουάριος 2004. Πανεπιστημιακές Παραδόσεις.
- ↑ [Pap94] C. H. Papadimitriou. Computational Complexity. Addison-Wesley Publishing Company, Reading, Massachusetts, 1994.
- ↑ [Sip97] M. Sipser. Introduction to the Theory of Computation. PWS Publishing Company, Menlo Park, CA, 1997.
- ↑ [GJ79] Μ. R. Garey and D. S. Johnson. Computers and Intractability: A Guide to the Theory of NP-Completeness. W. H. Freeman and Company, San Francisco, 1979.