Θωρία Υπολογιμών και...
Transcript of Θωρία Υπολογιμών και...
1
Θεωρία Υπολογισμών και
Αυτομάτων
Γιάννης Ρεφανίδης
Εισαγωγή
2
Γιάννης Ρεφανίδης 3
Θεωρία Υπολογισμού
• Τι είναι «Υπολογισμός»
• Τι μπορεί να κάνει ένας υπολογιστής;
• Τι δεν μπορεί να κάνει ένας υπολογιστής;
• Ποια προβλήματα μπορεί να λύσει ο υπολογιστής
αποδοτικά;
Γιάννης Ρεφανίδης 4
Αποφασισιμότητα
(decidability) • Μελέτη του τι μπορούν να κάνουν οι υπολογιστές;
– Τα προβλήματα που μπορούν να λύσουν οι υπολογιστές ονομάζονται αποφασίσιμα (decidable).
• Μη αποφασίσιμο πρόβλημα:
– Να ελεγχθεί εάν δύο διαφορετικά προγράμματα (σε μορφή πηγαίου κώδικα) παράγουν το ίδιο ακριβώς αποτέλεσμα.
3
Γιάννης Ρεφανίδης 5
Πολυπλοκότητα
(complexity) • Τι μπορούν να κάνουν οι υπολογιστές αποδοτικά;
(efficiently)
• Αντιμετωπίσιμα προβλήματα (tractable problems)
• Μη αντιμετωπίσιμα (δυσεπίλυτα) προβλήματα
(intractable problems)
Γιάννης Ρεφανίδης 6
Αφηρημένα μοντέλα υπολογισμών
• Πεπερασμένα αυτόματα
– Finite Automata, FA
• Αυτόματα στοίβας
– PushDown Automata, PDA
• Μηχανή Turing
– Turing Machine, TM
4
Γιάννης Ρεφανίδης 7
Τι είναι τα αυτόματα
• Χρήσιμο μοντέλο μελέτης / ανάπτυξης για πολλά είδη hardware και software. – Λογισμικό σχεδίασης και ελέγχου ψηφιακών
κυκλωμάτων
– Λεξικοί αναλυτές (π.χ. για τη μετάφραση - compilation – προγραμμάτων)
– Αναζήτηση συγκεκριμένων προτύπων φράσεων εντός κειμένου (π.χ. στο WEB)
– Λογισμικό ελέγχου συστημάτων οποιουδήποτε τύπου που έχουν πεπερασμένο αριθμό εσωτερικών καταστάσεων, όπως π.χ. πρωτόκολλα τηλεπικοινωνίας, πρωτόκολλα ασφαλούς ανταλαγής δεδομένων κλπ.
Γιάννης Ρεφανίδης 8
Ένα απλό αυτόματο
• Διακόπτης on/off (switch)
off on Start
Push
Push
5
Γιάννης Ρεφανίδης 9
Ένα λίγο πιο πολύπλοκο αυτόματο
t th the then start t h e n
Γιάννης Ρεφανίδης 10
Κεντρικό πρόβλημα
• Για ποιες ακολουθίες χαρακτήρων εισόδου
(strings) ένα αυτόματο καταλήγει σε μια τελική
κατάσταση;
• Για ένα αυτόματο Μ, το σύνολο εκείνων των
ακολουθιών εισόδου που οδηγούν σε τελικές
καταστάσεις ονομάζεται γλώσσα του αυτομάτου,
L(M).
6
Αλφάβητα και Γλώσσες
Γιάννης Ρεφανίδης 12
Αλφάβητα
(Alphabets) • Ένα αλφάβητο είναι ένα πεπερασμένο, μη κενό
σύνολο συμβόλων. Συνήθως χρησιμοποιούμε το
γράμμα Σ για ένα αλφάβητο. Παραδείγματα:
– Σ = {0,1}
– Σ = {a,b,c, ..., z}
7
Γιάννης Ρεφανίδης 13
Λέξεις
(Strings ή Words) • Μία λέξη είναι μια πεπερασμένη ακολουθία
συμβόλων επιλεγμένων από κάποιο αλφάβητο.
– Σ = {0,1}
• w=01101
• Μήκος λέξης είναι το πλήθος των συμβόλων της:
– |w| = |01101| = 5
• Ως κενή λέξη ορίζεται η λέξη με μηδενικό μήκος
και συμβολίζεται με ε.
– |ε| = 0
Γιάννης Ρεφανίδης 14
(Συμβάσεις σημειογραφίας)
• Συνηθίζεται να χρησιμοποιούμε:
– τα πεζά γράμματα στην αρχή του αλφάβητου
για να δηλώνουμε απλά σύμβολα.
• a, b, c, ...
– τα πεζά γράμματα στο τέλος του αλφάβητου
για να δηλώνουμε λέξεις.
• w, x, y, z, ...
8
Γιάννης Ρεφανίδης 15
Δυνάμεις ενός αλφάβητου
• Σk: Το σύνολο όλων των λέξεων μήκους k, αποτελούμενες από σύμβολα του Σ.
• Παράδειγμα: Έστω Σ={0,1}, τότε:
– Σ0={ε}
– Σ1={0, 1}
– Σ2={00,01,10,11}
• Ειδικές περιπτώσεις:
• Σ*=Σ0 Σ1 Σ2 Σ3 ...
• Σ+= Σ1 Σ2 Σ3 ...
Γιάννης Ρεφανίδης 16
Παράθεση λέξεων
(concatenation) • Έστω x και y δύο λέξεις. Ορίζουμε ως xy τη λέξη
που προκύπτει από την παράθεση των δύο επιμέρους λέξεων.
• Παράδειγμα:
– x=01101
– y=110
– xy=01101110
– yx=11001101
9
Γιάννης Ρεφανίδης 17
Ιδιότητες παράθεσης
• |xy|=|x|+|y|
• x(yz)=(xy)z
• Αν w=xyz, τότε:
– η x λέγεται πρόθεμα (prefix) της w
– η z λέγεται κατάληξη (suffix) της w
– η y λέγεται υπολέξη της w
• Ορίζουμε ως wk την παράθεση wk-1w
– Εάν w=01 τότε w3=010101
Γιάννης Ρεφανίδης 18
Ανάστροφη λέξης
• Η ανάστροφη μιας λέξης w συμβολίζεται με wR και είναι η λέξη w διαβασμένη από το τέλος προς την αρχή. – Εάν w=0011010 τότε wR=0101100
• Ιδιότητες: – (xy)R=yRxR
• Έστω x=abc και y=de, τότε: xy=abcde (xy)R=edcba xR=cba yR=ed yRxR=edcba
– (wR)R=w
10
Γιάννης Ρεφανίδης 19
Γλώσσες
• Μια γλώσσα L ενός αλφαβήτου Σ ορίζεται ως ένα υποσύνολο του Σ* . – L ⊆ Σ*
• Μια γλώσσα μπορεί να έχει άπειρες λέξεις ή και καμία.
• Παραδείγματα γλωσσών για το αλφάβητο Σ={0,1}: – Το σύνολο των λέξεων που αποτελούνται από n μηδενικά
ακολουθούμενα από n μονάδες: {ε, 01, 0011, 000111, ...}
– Το σύνολο των λέξεων με ίσους αριθμούς μηδενικών και μονάδων: {ε, 01, 10, 0011, 0101, 0110, ...}
– Το σύνολο των δυαδικών αριθμών που αντιστοιχούν σε πρώτους αριθμούς: {10, 11, 101, 111, 1011, ...}
Γιάννης Ρεφανίδης 20
Περιγραφή γλωσσών ως σύνολα
• Ένας γενικός τρόπος ορισμού μιας γλώσσας είναι μέσω της περιγραφής των ιδιοτήτων των λέξεων της, με συμβολισμό συνόλων:
• {w | ιδιότητες της λέξης w} – {w | η w αποτελείται από ίσο αριθμό 0 και 1}
– {w | η w είναι η δυαδική μορφή ενός πρώτου αριθμού}
– {w | η w είναι ένα συντακτικά σωστό πρόγραμμα της C}
– {0n1n | n ≥1}
– {0i1j | 0 ≤ i ≤ j }
• Ο παραπάνω συμβολισμός συνηθίζεται στις περιπτώσεις γλωσσών με άπειρο πλήθος λέξεων.
11
Γιάννης Ρεφανίδης 21
Πράξεις με γλώσσες (1/3)
• Εφόσον οι γλώσσες είναι σύνολα, μπορούν να
συνδυαστούν με πράξεις επί συνόλων:
– Ένωση, L1 L2
• Το σύνολο όλων των λέξεων που ανήκουν είτε στην L1 είτε
στην L2.
• L1 L2 = { w | w ∈ L1 w ∈ L2 }
– Τομή, L1 L2
• Το σύνολο των λέξεων που ανήκουν και στην L1 και στην L2.
• L1 L2 = { w | w ∈ L1 w ∈ L2 }
Γιάννης Ρεφανίδης 22
Πράξεις με γλώσσες (2/3)
– Διαφορά, L1 - L2
• Το σύνολο των λέξεων που ανήκουν στην L1 και
δεν ανήκουν στην στην L2.
• L1 - L2 = { w | w ∈ L1 w ∉ L2 }
– Συμπλήρωμα, L1 = Σ* - L1
• Το σύνολο των λέξεων του Σ* που δεν ανήκουν
στην L1.
• L1 = { w | w ∈ Σ* w ∉ L1 }
12
Γιάννης Ρεφανίδης 23
Πράξεις με γλώσσες (3/3)
– Παράθεση, L1L2
• Το σύνολο των λέξεων που σχηματίζονται από την παράθεση μιας λέξης από την L1 και μιας λέξης από την L2.
• L1L2 = { w | w=xy, x ∈ L1 y ∈ L2 }
– Κλειστότητα ή Kleene star, L*
• Το σύνολο των λέξεων που σχηματίζονται από την παράθεση οποιουδήποτε πλήθους λέξεων της L.
• L*={w∈Σ*: w=w1w2...wk, k0, w1, w2, ..., wk ∈ L}
• (L*)*=L*
Γιάννης Ρεφανίδης 24
Προβλήματα
• Στη θεωρία αυτομάτων ένα πρόβλημα είναι η
ερώτηση εάν μια λέξη ανήκει σε μια γλώσσα ή
όχι. Ειδικότερα:
• Δοθείσης μιας λέξης w ∈ Σ*, αποφάσισε εάν η w
ανήκει στη γλώσσα L.
• Όλα τα προβλήματα μπορούν να αναχθούν σε
ισοδύναμα (απλούστερα) προβλήματα της
παραπάνω μορφής με ίδια χαρακτηριστικά
υπολογισιμότητας και πολυπλοκότητας.
13
Κανονικές εκφράσεις
(regular expressions)
Γιάννης Ρεφανίδης 26
Τυποποιημένοι τρόποι
περιγραφής γλωσσών • Κανονικές εκφράσεις
– περιορισμένες δυνατότητες
• Γραμματικές ανεξάρτητες από τα συμφραζόμενα.
– ισχυρές
• Γραμματικές εξαρτημένες από τα συμφραζόμενα.
– ισχυρότερες
14
Γιάννης Ρεφανίδης 27
Κανονικές εκφράσεις
(regular expressions)
• Οι κανονικές εκφράσεις ενός αλφαβήτου Σ είναι οι συμβολοσειρές του αλφαβήτου Σ { ) , ( , ε , + , * } για τις οποίες ισχύουν τα παρακάτω: – ∅, ε και κάθε στοιχείο του Σ είναι κανονική έκφραση.
– Αν α και β είναι κανονικές εκφράσεις, και η (αβ) είναι επίσης.
– Αν α και β είναι κανονικές εκφράσεις, και η α+β είναι επίσης.
– Αν α είναι κανονική έκφραση, και η α* είναι επίσης
– Τίποτα δεν είναι κανονική έκφραση εκτός από τα παραπάνω.
Γιάννης Ρεφανίδης 28
Παραδείγματα
• (a+b)*a : Περιγράφει λέξεις που τελειώνουν σε a.
• aa*+bb* : Περιγράφει λέξεις που αποτελούνται είτε μόνο από a (ένα ή περισσότερα) είτε μόνο από b (ένα ή περισσότερα).
• c*(a+bc*)*: Περιγράφει λέξεις στις οποίες δεν εμφανίζεται η υπολέξη ac.
• 0*+0*(1+11)(00*(1+11))*0*: Περιγράφει το σύνολο των λέξεων από 0 και 1, οι οποίες δεν περιέχουν την υπολέξη 111.
15
Γιάννης Ρεφανίδης 29
Κανονικές γλώσσες
• Κάθε κανονική έκφραση αντιπροσωπεύει μια γλώσσα, δηλαδή το σύνολο εκείνων των λέξεων που μπορούν να περιγραφούν από την κανονική έκφραση.
• Έστω Ε μια κανονική έκφραση, συμβολίζουμε με L(E) τη γλώσσα που παράγεται από την Ε.
• Ιδιότητες: – L()=, L(ε)={ε}
– L(Ε1+Ε2)=L(Ε1) L(Ε2)
– L(Ε1Ε2)=L(Ε1)L(Ε2)
– L(Ε1*)=L(Ε1)*
Γιάννης Ρεφανίδης 30
Και άλλα παραδείγματα
• Να γραφεί μία κανονική έκφραση για το σύνολο
εκείνων των λέξεων του αλφαβήτου Σ={0,1}, στις
οποίες τα 0 και 1 εναλλάσσονται.
– Ε1=(01)*+(10)*+0(10)*+1(01)*
– Ε2= (1+ε)(01)*(0+ε)
16
Πεπερασμένα Αυτόματα
Γιάννης Ρεφανίδης 32
Είδη πεπερασμένων αυτομάτων
• Ντετερμινιστικά αυτόματα
• Μη ντετερμινιστικά αυτόματα
• Με ε-μεταβάσεις
17
Πεπερασμένα Αυτόματα
Ντετερμινιστικά Πεπερασμένα
Αυτόματα
Γιάννης Ρεφανίδης 34
Ντετερμινιστικά Πεπερασμένα
Αυτόματα - ΝΠΑ (Deterministic Finite Automata - DFA)
• Για το αλφάβητο Σ={0,1}, το παρακάτω αυτόματο
δέχεται όλες τις λέξεις που δεν περιέχουν 2
συνεχόμενους άσσους.
A start 1
B C 1
0 0
1 0
18
Γιάννης Ρεφανίδης 35
Ορισμός ΝΠΑ
• Ένα ντετερμινιστικό πεπερασμένο αυτόματο είναι
μια πεντάδα Μ={Κ,Σ,δ,s,F} όπου:
– Κ είναι ένα πεπερασμένο σύνολο από καταστάσεις
– Σ είναι ένα αλφάβητο
– s ∈ K είναι η αρχική κατάσταση
– F ⊆ K είναι το σύνολο των τελικών καταστάσεων
– δ είναι η συνάρτηση μετάβασης (transition function)
από το KxΣ στο Κ.
Γιάννης Ρεφανίδης 36
Παράδειγμα (1/2)
• Κ={Α,Β,C}
• Σ={0,1}
• s=A
• F={A,B}
A start 1
B C 1
0
1 0
19
Γιάννης Ρεφανίδης 37
Παράδειγμα (2/2)
• Συνάρτηση μετάβασης
– Αναπαράσταση με διάγραμμα καταστάσεων
– αναπαράσταση με πίνακα
Τρέχουσα κατάσταση
q
Επόμενη είσοδος
σ
Επόμενη κατάσταση
δ(q,σ)
Α 0 Α
Α 1 Β
Β 0 Α
Β 1 C
C 0 C
C 1 C
Γιάννης Ρεφανίδης 38
Παράδειγμα
• Αυτόματο στο αλφάβητο Σ={0,1}, το οποίο
δέχεται τις λέξεις με ζυγό αριθμό μηδενικών και
άσσων:
q0
start
q1
q2
q3
1
1
0
0
0
0
1
1
20
Γιάννης Ρεφανίδης 39
Επέκταση της συνάρτησης
μετάβασης σε λέξεις • Επεκτείνουμε τον ορισμό της συνάρτησης
μετάβασης σε λέξεις w με |w|≥0 ως εξής:
– δ(q,ε)=q
– δ(q,wα)=δ(δ(q,w),a), όπου w∈Σ*, α∈Σ.
Γιάννης Ρεφανίδης 40
Γλώσσα ενός ντετερμινιστικού
πεπερασμένου αυτομάτου • Έστω Μ ένα ντετερμινιστικό πεπερασμένο
αυτόματο. Η γλώσσα του Μ συμβολίζεται με
L(M) και αποτελείται από το σύνολο όλων
εκείνων των λέξεων που δέχεται το M.
– L(M)={ w | w ∈ Σ* και δ(s,w) ∈ F }
• Τα σύνολα των γλωσσών των ντετερμινιστικών
πεπερασμένων αυτομάτων και των γλωσσών των
κανονικών εκφράσεων ταυτίζονται.
21
Γιάννης Ρεφανίδης 41
Συνολική κατάσταση (1/2)
(configuration) • Η συνολική κατάσταση υπολογισμού ενός
αυτομάτου σε κάποια στιγμή της λειτουργίας του είναι η τρέχουσα κατάστασή του και το αδιάβαστο τμήμα της λέξης που επεξεργάζεται.
– Συμβολίζεται με (q,w), όπου q η τρέχουσα κατάσταση και w το κομμάτι της λέξης εισόδου που δεν έχει ακόμη διαβαστεί.
– (q,w)KxΣ*
Γιάννης Ρεφανίδης 42
Συνολική κατάσταση (2/2)
(configuration) • Ο συμβολισμός (q,w)⊢Μ (q',w') δηλώνει ότι το
αυτόματο Μ μπορεί να μεταβεί από τη συνολική
κατάσταση (q,w) στην (q',w') σε ένα βήμα.
– Προφανώς ισχύει: w=σw' για κάποιο σύμβολο σ και
επιπλέον δ(q,σ)=q'.
• Παρόμοια, ο συμβολισμός (q,w)⊢*Μ (q',w')
δηλώνει ότι το αυτόματο Μ μπορεί να μεταβεί από
τη συνολική κατάσταση (q,w) στην (q',w') σε
κανένα, ένα ή περισσότερα βήματα.
22
Πεπερασμένα αυτόματα
Μη-ντετερμινιστικά
πεπερασμένα αυτόματα
Γιάννης Ρεφανίδης 44
Μη-ντετερμινιστικά
πεπερασμένα αυτόματα (ΜΠΑ) (Non-deterministic finite automata – NFA)
• Από κάθε κατάσταση επιτρέπονται πολλές
διαφορετικές μεταβάσεις για το ίδιο σύμβολο
εισόδου.
• Το αυτόματο μπορεί αυθαίρετα να επιλέξει ποια
από τις δυνατές μεταβάσεις θα ακολουθήσει.
• Η επιλογή αυτή είναι μη-ντετερμινιστική.
23
Γιάννης Ρεφανίδης 45
Σύγκριση ΜΠΑ και ΝΠΑ
• Μια λέξη γίνεται δεκτή από ένα ΜΠΑ εάν
υπάρχει κάποιος τρόπος το ΜΠΑ να μεταβεί από
την αρχική του κατάσταση σε μια τελική με
είσοδο τη συγκεκριμένη λέξη.
• Κάθε μη-ντετερμινιστικό πεπερασμένο αυτόματα
είναι ισοδύναμο με κάποιο ντετερμινιστικό.
• Τα μη-ντετερμινιστικά πεπερασμένα αυτόματα
είναι ευκολότερα στη σχεδίαση και την
κατανόηση από τα αντίστοιχα ντετερμινιστικά.
Γιάννης Ρεφανίδης 46
Παράδειγμα
• Μη ντετερμινιστικό πεπερασμένο αυτόματο
(ΜΠΑ) που δέχεται όλες τις λέξεις που
τελειώνουν σε 01.
• και το αντίστοιχο ντετερμινιστικό... (ΝΠΑ) q0 q1 q2
start
0,1
0 1
q0 q1 q2
start
1
0 1
1
0 0
24
Γιάννης Ρεφανίδης 47
Ακόμη ένα παράδειγμα (1/2)
• ΝΠΑ για τη γλώσσα L=(ab + aba)*.
q0 q1 q2 q3
q4
start a b a
a
b b
a b
a b
Η κατάσταση q4 και
τα τόξα που οδηγούν σε
αυτή θα μπορούσαν να
παραλειφθούν.
Γιάννης Ρεφανίδης 48
Ακόμη ένα παράδειγμα (2/2)
• Και το αντίστοιχο ΜΠΑ για τη γλώσσα L=(ab +
aba)*.
q0
start q1
q2
a
b
b a
Όταν από μια κατάσταση δεν
εξέρχεται βέλος για κάποιο
συγκεκριμένο σύμβολο εισόδου,
αυτό δηλώνει ότι αν στη
κατάσταση αυτή έρθει το συγκεκριμένο
σύμβολο εισόδου, το αυτόματα τερματίζει
απαντώντας αρνητικά (πεθαίνει – dies)
25
Γιάννης Ρεφανίδης 49
Ορισμός ΜΠΑ
• Ένα μη-ντετερμινιστικό πεπερασμένο αυτόματο
είναι μια πεντάδα Μ={Κ,Σ,s,F,Δ} όπου:
– Κ είναι ένα πεπερασμένο σύνολο από καταστάσεις
– Σ είναι ένα αλφάβητο
– s ∈ K είναι η αρχική κατάσταση
– F ⊆ K είναι το σύνολο των τελικών καταστάσεων
– Δ είναι η σχέση μετάβασης (transition function) από το
KxΣ στο Κ.
Γιάννης Ρεφανίδης 50
Παράδειγμα ορισμού ΜΠΑ (1/2)
• Μ={Κ,Σ,s,F,Δ}
– K={q0,q1,q2}
– Σ={a,b}
– s=q0
– F={q0}
– και... (επόμενη διαφάνεια)
q0
start
q1
q2
a
b
b a
26
Γιάννης Ρεφανίδης 51
Παράδειγμα ορισμού ΜΠΑ (2/2)
• Σχέση μετάβασης Δ
Τρέχουσα
κατάσταση
q
Επόμενη
είσοδος
σ
Επόμενη
κατάσταση
Δ(q,σ)
q0 a {q1}
q0 b {}
q1 a {}
q1 b {q0,q2}
q2 a q0
q2 b {}
q0
start
q1
q2
a
b
b a
Πεπερασμένα αυτόματα
Ισοδυναμία ντετερμινιστικών και μη-
ντετερμινιστικών πεπερασμένων
αυτομάτων
27
Γιάννης Ρεφανίδης 53
Ισοδυναμία ΝΠΑ και ΜΠΑ
• Δύο πεπερασμένα αυτόματα Μ1 και Μ2
ονομάζονται ισοδύναμα αν και μόνο αν
L(M1)=L(M2).
• Για κάθε μη-ντετερμινιστικό πεπερασμένο
αυτόματα υπάρχει ένα ισοδύναμο ντετερμινιστικό
πεπερασμένο αυτόματο.
Γιάννης Ρεφανίδης 54
(Mαθηματικό υπόβαθρο)
• Για ένα σύνολο Α, το δυναμοσύνολό του
συμβολίζεται με 2Α ή με Power(A) και
αποτελείται από όλα τα υποσύνολά του.
• Βρίσκεται εύκολα ότι το σύνολο 2Α έχει 2|Α|
στοιχεία, εξ'ού και ο συμβολισμός 2Α.
• Παράδειγμα:
– Α = {a,b,c}
– 2Α = { {}, {a}, {b}, {c}, {a,b}, {a,c}, {b,c}, {a,b,c} }
28
Γιάννης Ρεφανίδης 55
Μετατροπή ΜΠΑ σε ΝΠΑ - Βήμα 1
• Έστω Μ={ΚM,ΣM,sM,FM,δ} ένα μη-
ντετερμινιστικό πεπερασμένο αυτόματο και
N={ΚN,ΣN,sN,FN,Δ} το αντίστοιχο ντετερμινιστικό
που θέλουμε να κατασκευάσουμε.
• Βασική ιδέα: Το σύνολο των καταστάσεων του N
είναι το δυναμοσύνολο των καταστάσεων του M:
– ΚN=2ΚM
– Ωστόσο δεν είναι όλες οι καταστάσεις ΚΝ
προσβάσιμες...
Γιάννης Ρεφανίδης 56
Παράδειγμα μετατροπής
ΜΠΑ σε ΝΠΑ – Βήμα 1 • Έστω το ΜΠΑ Μ τριών καταστάσεων που δέχεται
τη γλώσσα L=(0+1)*01.
• Το αντίστοιχο ΝΠΑ Ν μπορεί να έχει μέχρι και 8 καταστάσεις:
– , ΚΝ=2ΚΜ, |ΚΝ | =2 |ΚΜ | = 23 = 8
q0 q1 q2
start
0,1
0 1
29
Γιάννης Ρεφανίδης 57
Παράδειγμα μετατροπής
ΜΠΑ σε ΝΠΑ – Βήμα 1
q0q1q2
q2 q0q1
∅
q1q2 q0q2
q0 q1
Γιάννης Ρεφανίδης 58
Μετατροπή ΜΠΑ σε ΝΠΑ –Βήμα 2
• Αρχική κατάσταση του ΝΠΑ είναι αυτή που
αντιστοιχεί στην αρχική κατάσταση του ΜΠΑ.
• Τελικές καταστάσεις του ΝΠΑ είναι όσες
"περιέχουν" τουλάχιστον μία τελική κατάσταση
του ΜΠΑ.
30
Γιάννης Ρεφανίδης 59
Παράδειγμα μετατροπής
ΜΠΑ σε ΝΠΑ – Βήμα 2
q0q1q2
q2 q0q1
∅
q1q2 q0q2
q0 q1
start
Γιάννης Ρεφανίδης 60
Μετατροπή ΜΠΑ σε ΝΠΑ –Βήμα 3
• Για κάθε SΚΜ (όπου η S αντιστοιχεί σε μια
κατάσταση του Ν) και για κάθε σύμβολο εισόδου
σ, ορίζουμε ως δ(S,σ) την κατάσταση του Ν που
αντιστοιχεί στο σύνολο των καταστάσεων:
Sq
qS
),(),(
31
Γιάννης Ρεφανίδης 61
Παράδειγμα μετατροπής
ΜΠΑ σε ΝΠΑ – Βήμα 3
q0 q1 q2
start
0,1
0 1
Κατάσταση S δ(S,0) δ(S,1)
∅ ∅ ∅
{q0} {q0, q1} {q0}
{q1} ∅ {q2}
{q2} ∅ ∅
{q0, q1} {q0, q1} {q0, q2}
{q0, q2} {q0, q1} {q0}
{q1, q2} ∅ {q2}
{q0,q1,q2} {q0, q1} {q0, q2}
Γιάννης Ρεφανίδης 62
Παράδειγμα μετατροπής
ΜΠΑ σε ΝΠΑ – Βήμα 3
q0q1q2
q2 q0q1
∅
q1q2 q0q2
q0 q1
start
0
1 0,1
1
0
0,1
0 1
0 1 0
1
0
1
32
Γιάννης Ρεφανίδης 63
Παράδειγμα μετατροπής
ΜΠΑ σε ΝΠΑ – Βήμα 3
q0q1q2
q2 q0q1
∅
q1q2 q0q2
q0 q1
start
0
1 0,1
1
0
0,1
0 1
0 1 0
1
0
1
Γιάννης Ρεφανίδης 64
Παράδειγμα μετατροπής
ΜΠΑ σε ΝΠΑ – Βήμα 3
q0 q0q1 q0q2
start
1
0 1
1
0 0
• ...όπως στη διαφάνεια 46.
33
Πεπερασμένα αυτόματα
Μη-ντετερμινιστικά
πεπερασμένα αυτόματα
με ε-μεταβάσεις
Γιάννης Ρεφανίδης 66
Μη-ντετερμινιστικά πεπερασμένα
αυτόματα με ε-μεταβάσεις • Υπάρχουν μεταβάσεις που επιγράφονται με την
κενή συμβολοσειρά ε.
• Όταν ένα ΜΠΑ βρεθεί σε μια κατάσταση από την οποία ξεκινά μία (ή περισσότερες) ε-μετάβαση, μπορεί (μη-ντετερμινιστικά πάντα) να την ακολουθήσει.
• Η ύπαρξη των ε-μεταβάσεων δεν επεκτείνει τις γλώσσες που αναγνωρίζουν τα πεπερασμένα αυτόματα.
• Οι ε-μεταβάσεις μας επιτρέπουν να κατασκευάζουμε πιο ευκολονόητα αυτόματα.
34
Γιάννης Ρεφανίδης 67
Παράδειγμα 1
• Αυτόματο που δέχεται δεκαδικούς αριθμούς
q0 q1 q4
start ε,+,- . q2
q3
0,1,...,9
0,1,...,9
0,1,...,9 0,1,...,9
.
Γιάννης Ρεφανίδης 68
Παράδειγμα 2
• Αυτόματο που αναγνωρίζει δύο λέξεις
q0
start
t q1 q2 q3
h i q3 q4
s
t q5 q6 q7
h a q8 q9
t
ε
ε
Σ
Σ
Σ
35
Γιάννης Ρεφανίδης 69
Ορισμός ΜΠΑ με ε-μεταβάσεις
• Ο ορισμός ενός ΜΠΑ με ε-μεταβάσεις είναι ίδιος
με αυτόν ενός απλού ΜΠΑ, με μόνη τη διαφορά
ότι η σχέση μετάβασης Δ ορίζεται ως εξής:
– Δ: Κ x Σ{ε} Κ
• Δηλαδή η σχέση μετάβασης περιλαμβάνει και
μεταβάσεις που γίνονται με την κενή
συμβολοσειρά ε.
Γιάννης Ρεφανίδης 70
Ισοδυναμία ΜΠΑ με ε-μεταβάσεις
με ΝΠΑ • Ορίζουμε ως ε-κλείσιμο (ECLOSE) μιας
κατάστασης q, ECLOSE(q) το σύνολο όλων των καταστάσεων του αυτομάτου που είναι προσβάσιμες από την q ακολουθώντας μόνο ε-μεταβάσεις.
• Η μετατροπή ΜΠΑ με ε-μεταβάσεις είναι παρόμοια σε ΝΠΑ είναι ίδια με αυτήν που έχουμε δει για τη μετατροπή ΜΠΑ σε ΝΠΑ, αν κατά τη μετατροπή αντικαταστήσουμε κάθε κατάσταση q με την ECLOSE(q).
36
Ιδιότητες των γλωσσών
των πεπερασμένων αυτομάτων
Γιάννης Ρεφανίδης 72
Βασικές ιδιότητες γλωσσών
πεπερασμένων αυτομάτων • Η κλάση των γλωσσών που είναι δεκτές από
πεπερασμένα αυτόματα είναι κλειστή ως προς:
– Ένωση
– Παράθεση
– Kleene Star
– Συμπλήρωση
– Τομή
37
Γιάννης Ρεφανίδης 73
Διαγραμματική απόδειξη
• Έστω δύο ΝΠΑ αυτόματα Α και Β και L(A) και
L(B) οι γλώσσες που γίνονται δεκτές από αυτά.
Α1
Α2
Α3
start
Α
Β1
Β2
Β3
Β
start
Γιάννης Ρεφανίδης 74
Διαγραμματική απόδειξη
Κλειστότητα ως προς την ένωση
• Η γλώσσα
L(A) L(B) γίνεται
δεκτή από το
διπλανό αυτόματο:
Α1
Α2
Α3
Α
Β1
Β2
Β3
Β q0
start
ε
ε
38
Γιάννης Ρεφανίδης 75
Διαγραμματική απόδειξη
Κλειστότητα ως προς την παράθεση
• Η γλώσσα L(A)L(B) γίνεται δεκτή από το
παρακάτω αυτόματο:
Α1
Α2
Α3
Α
Β1
Β2
Β3
Β
start
ε
ε
Γιάννης Ρεφανίδης 76
Διαγραμματική απόδειξη
Κλειστότητα ως προς το Kleene Star
• Η γλώσσα L(A)* γίνεται δεκτή από το
παρακάτω αυτόματο:
Α1
Α2
Α3
Α start
ε
ε q1
ε
q0
39
Γιάννης Ρεφανίδης 77
Κλειστότητα ως προς τη συμπλήρωση
• Η γλώσσα Σ* - L(A) γίνεται δεκτή από το αυτόματο A' το οποίο προκύπτει από το Α αν όλες οι τελικές καταστάσεις του Α γίνουν μη τελικές και όλες οι μη-τελικές γίνουν τελικές. – Προσοχή: Το αυτόματο Α θα πρέπει να είναι πλήρες
μεταβάσεων, δηλαδή να υπάρχουν μεταβάσεις για όλες τις πιθανές εισόδους και όλες τις καταστάσεις του.
– Προσοχή: Η παραπάνω τεχνική ισχύει μόνο για ντετερμινιστικά αυτόματα. Τα ΜΠΑ (με ή χωρίς ε-μεταβάσεις) πρέπει πρώτα να μετατραπούν στα αντίστοιχα ΝΠΑ.
Γιάννης Ρεφανίδης 78
Κλειστότητα ως προς την τομή
• L(A) L(B)=
Σ*- ((Σ*-L(A)) (Σ*-L(B))
40
Γιάννης Ρεφανίδης 79
Αλγόριθμοι
• Υπάρχουν αλγόριθμοι που απαντούν στα παρακάτω ερωτήματα: – Δεδομένου πεπερασμένου αυτόματου M και
συμβολοσειράς w, ανήκει η w στο L(M);
– Δεδομένου πεπερασμένου αυτόματου M, ισχύει L(M) = ;
– Δεδομένου πεπερασμένου αυτόματου M, ισχύει L(M) = Σ* ;
– Δεδομένων δύο πεπερασμένων αυτομάτων Μ1 και Μ2, ισχύει L(M1)L(M2) ;
– Δεδομένων δύο πεπερασμένων αυτομάτων Μ1 και Μ2, ισχύει L(M1)=L(M2) ;
Πεπερασμένα αυτόματα
Ισοδυναμία πεπερασμένων
αυτομάτων και κανονικών
εκφράσεων
41
Γιάννης Ρεφανίδης 81
Κατασκευή αυτομάτων από
κανονικές εκφράσεις • Με βάση τις ιδιότητες κλειστότητας που είδαμε
στις προηγούμενες διαφάνειες, μπορούμε να
κατασκευάσουμε αυτόματο που να δέχεται τη
γλώσσα οποιασδήποτε κανονικής έκφρασης.
• Η κατασκευή των αυτομάτων γίνεται με βάση τα
απλούστερα αυτόματα που δέχονται τα
μεμονωμένα σύμβολα του αλφαβήτου καθώς και
την κενή λέξη ε.
Γιάννης Ρεφανίδης 82
Παράδειγμα κατασκευής αυτομάτου
από κανονική έκφραση • Να κατασκευαστεί αυτόματο που να
δέχεται τη γλώσσα (ab + aab)*
a
b
ε ε a b
a a b ε
ε
ε ε
ε ε
42
Γιάννης Ρεφανίδης 83
Εύρεση κανονικών εκφράσεων
από αυτόματα (1/3) • Η διαδικασία βασίζεται στην απαλοιφή των
ενδιάμεσων μη τελικών καταστάσεων του αυτομάτου.
• Για κάθε ενδιάμεση μη-τελική κατάσταση: – Απαλοίφουμε την κατάσταση και όλα τα τόξα που
εισέρχονται ή εξέρχονται από αυτή.
– Προσθέτουμε ένα νέο τόξο για κάθε συνδυασμό εισερχόμενου-εξερχόμενου τόξου της κατάστασης που απαλείψαμε. Το νέο τόξο έχει ως επιγραφή την παράθεση των επιγραφών των επιμέρους τόξων, δηλαδή μια κανονική έκφραση.
Γιάννης Ρεφανίδης 84
Εύρεση κανονικών εκφράσεων
από αυτόματα (2/3)
• Για παράδειγμα, από το:
• παίρνουμε το:
Α Β Γ
Χ Υ
Ζ
W
Α Γ
Z+XW*Y
43
Γιάννης Ρεφανίδης 85
Εύρεση κανονικών εκφράσεων
από αυτόματα (3/3)
• Εάν το αρχικό αυτόματο είχε μόνο μια τελική κατάσταση, στο τέλος θα καταλήξουμε με ένα αυτόματο της μορφής:
• Το αυτόματο αυτό αντιστοιχεί στην κανονική έκφραση: (R+SU*T)*SU*
Α Β
start
R S
T
U
Γιάννης Ρεφανίδης 86
Παράδειγμα (1/4)
• Έστω το παρακάτω αυτόματο.
• Πρέπει να απαλείψουμε τις καταστάσεις Β και Γ...
Α Δ
start
a
Β Γ
a b
b
a b
b a
44
Γιάννης Ρεφανίδης 87
Παράδειγμα (2/4)
Α Δ
start
a
Β Γ
a b
b
a b
b a
Α Δ
start
a
Γ
b
a b
ba* b
aa*b
Γιάννης Ρεφανίδης 88
Παράδειγμα (3/4)
Α Δ
start
a
Γ
b
a b
ba* b
aa*b
Α Δ
start
a+bb*aa*b
ba* b+ab*aa*b
45
Γιάννης Ρεφανίδης 89
Παράδειγμα (4/4)
• Από το παραπάνω αυτόματο προκύπτει ότι η κανονική έκφραση στην οποία αυτό αντιστοιχεί είναι η: – (ba* b+ab*aa*b)(a+bb*aa*b)*
• Η ίδια τεχνική μπορεί να εφαρμοστεί και για αυτόματα με περισσότερες από μια τελικές καταστάσεις.
Α Δ
start
a+bb*aa*b
ba* b+ab*aa*b
Μη κανονικές γλώσσες
46
Γιάννης Ρεφανίδης 91
Μη κανονικές γλώσσες
• Είναι οι γλώσσες εκείνες για τις οποίες δεν
υπάρχει πεπερασμένο αυτόματο (ντετερμινιστικό
ή μη) που να τις δέχεται.
• Δεν υπάρχει γενική μέθοδος απόδειξης ότι μία
γλώσσα δεν είναι κανονική.
• Για να αποδείξουμε ότι μια γλώσσα δεν είναι
κανονική, χρησιμοποιούμε κάποιες βασικές
ιδιότητες που ισχύουν για τις κανονικές γλώσσες.
Γιάννης Ρεφανίδης 92
Ιδιότητα 1
• Καθώς διαβάζουμε μια λέξη (οσοδήποτε μεγάλου
μήκους) από αριστερά προς τα δεξιά, το ποσό της
μνήμης που χρειάζεται για να αποφασιστεί στο
τέλος αν η λέξη ανήκει ή όχι στη γλώσσα πρέπει
να είναι φραγμένο και εξαρτώμενο από τη
γλώσσα (δηλ.: να μην εξαρτάται από τη
συγκεκριμένη λέξη).
– π.χ. κάτι τέτοιο δεν ισχύει για τις λέξεις της γλώσσας
{anbn: n>0}
47
Γιάννης Ρεφανίδης 93
Ιδιότητα 2
• Οι κανονικές γλώσσες με άπειρο αριθμό λέξεων (προφανώς μη φραγμένου μήκους) έχουν άπειρα υποσύνολα με κάποια απλή επαναληπτική δομή που προκύπτει από άστρο στην αντίστοιχη κανονική έκφραση ή από κύκλο στο διάγραμμα καταστάσεων ενός πεπερασμένου αυτόματου.
– Η γλώσσα {an: ο n είναι πρώτος αριθμός} δεν είναι κανονική.
Γιάννης Ρεφανίδης 94
Θεώρημα άντλησης
• Έστω L μια άπειρη κανονική γλώσσα. Τότε υπάρχουν λέξεις x,y,z τέτοιες ώστε y≠ε και xynz ∈ L για κάθε n ≥ 0.
– Με άλλα λόγια, υπάρχουν ορισμένα σημεία μέσα σε ορισμένες λέξεις (και σίγουρα στις "πολύ μεγάλες" λέξεις) στα οποία μπορεί να εισαχθεί επανειλημένα μια υπολέξη, χωρίς αυτό να επηρρεάσει το γεγονός ότι η αρχική λέξη γίνεται δεκτή.
48
Γιάννης Ρεφανίδης 95
Παράδειγμα 1
• Η γλώσσα L={anbn : n≥0}δεν είναι κανονική. – Προσπαθούμε να φτιάξουμε λέξεις της μορφής xynz
που να ανήκουν στη γλώσσα για κάθε n.
– Υπάρχουν τρεις περιπτώσεις: • Το y να αποτελείται μόνο από a.
• Το y να αποτελείται μόνο από b.
• Το y να αποτελείται από μερικά a και στη συνέχεια από μερικά b.
– Και στις τρεις περιπτώσεις μπορεί εύκολα να φανεί ότι δεν είναι δυνατόν λέξεις αυτής της μορφής να ανήκουν στη γλώσσα L για κάθε n, είτε γιατί δεν θα είναι ίσος ο αριθμός των a και των b (πρώτη και δεύτερη περίπτωση), είτε γιατί θα υπάρχουν 'ανακατωμένα' a και b (τρίτη περίπτωση).
Γιάννης Ρεφανίδης 96
Παράδειγμα 2
• Η γλώσσα L={an: Ο n είναι πρώτος αριθμός} δεν
είναι κανονική.
– Σύμφωνα με το θεώρημα, θα πρέπει να υπάρχουν x=ap,
y=aq, z=ar, p,r ≥0, q>0, τέτοια ώστε κάθε λέξη της
μορφής xynz να ανήκει στη γλώσσα.
– Δηλαδή θα πρέπει η λέξη ap+nq+r να ανήκει στη γλώσσα
για κάθε n≥0, δηλαδή ο αριθμός p+nq+r πρέπει να
είναι πρώτος για κάθε n≥0.
– Όμως, έστω n=p+2q+r+2, τότε p+nq+r=(q+1)(p+2q+r)
49
Γραμματικές χωρίς
συμφραζόμενα
Γιάννης Ρεφανίδης 98
Γραμματικές χωρίς συμφραζόμενα
• Μια γραμματική χωρίς συμφραζόμενα G ορίζεται
ως μια τετράδα (V, Σ, R, S) όπου:
– V είναι ένα αλφάβητο
– Σ είναι το σύνολο των τερματικών συμβόλων,
Σ V.
– R, το σύνολο των κανόνων, είναι μια σχέση
από το (V-Σ) στο V*.
– S, το αρχικό σύμβολο, είναι στοιχείο του V-Σ.
50
Γιάννης Ρεφανίδης 99
Εφαρμογή κανόνων
• Τα στοιχεία του συνόλου V-Σ ονομάζονται μη-τερματικά.
• Για κάθε Α∈V-Σ και u∈V *, εφόσον ισχύει R(A,u) γράφουμε Au.
• Για δύο συμβολοσειρες v,w∈V*, λέμε ότι η w παράγεται από την v σε ένα βήμα, και συμβολίζουμε με v⇒w εάν:
– v=xAy, x,y∈V*
– w=xuy
– Υπάρχει ο κανόνας Au στο σύνολο κανόνων.
• Οι γραμματικές λέγονται "χωρίς συμφραζόμενα" επειδή στο αριστερό μέρος των κανόνων τους έχουν ένα μη-τερματικό σύμβολο και μόνο.
Γιάννης Ρεφανίδης 100
Παραγωγή των λέξεων της γλώσσας
• Συμβολίζουμε με v⇒w το γεγονός ότι η λέξη w
παράγεται από τη λέξη v με εφαρμογή πολλών
κανόνων από το σύνολο κανόνων R.
• Με βάση τα παραπάνω, η γλώσσα L(G) που
παράγεται από μια γραμματική χωρίς
συμφραζόμενα G ορίζεται ως εξής:
– L(G)={w∈Σ*:S⇒w}
*
*
51
Γιάννης Ρεφανίδης 101
Παράδειγμα 1
• Έστω η γραμματική χωρίς συμφραζόμενα G = (V,
Σ, R, S) όπου:
– V={S,a,b}
– Σ={a,b}
– Η σχέση R αποτελείται από τους κανόνες SaSb και
Sε.
• Μια παραγωγή της γλώσσας αυτής είναι η:
– S⇒aSb⇒aaSbb⇒aabb
• Είναι εύκολο να δει κανείς ότι L(G)={anbn: n≥0}
Γιάννης Ρεφανίδης 102
Παράδειγμα 1 (συνέχεια...)
• Βλέπουμε από το παράδειγμα ότι κάποιες
γλώσσες χωρίς συμφραζόμενα δεν είναι
κανονικές.
• Ωστόσο ισχύει ότι όλες οι κανονικές γλώσσες
μπορούν να προκύψουν από γραμματικές χωρίς
συμφραζόμενα.
52
Γιάννης Ρεφανίδης 103
Παράδειγμα 2
• Έστω η γραμματική G=(V,Σ,R,S) με:
– V={S,Π,Ρ,Ο,Ε,Α}∪Σ
– Σ={ο, είναι, Νίκος, καλός, φοιτητής}
– R={SΠΡΠ, ΠΑΕΟ, ΠΕΟ, ΠΑΟ, ΠΟ, Αο, Ρείναι, ΟΝίκος, Εκαλός, Οφοιτητής}
• Έγκυρες "λέξεις" που παράγονται είναι οι:
– ο Νίκος είναι καλός φοιτητής
– ο Νίκος είναι φοιτητής
– ο καλός Νίκος είναι φοιτητής
– κλπ
Π=Προσδιορισμός
Ρ=Ρήμα
Ο=Ουσιαστικό
Ε=Επίθετο
Α=Άρθρο
Γιάννης Ρεφανίδης 104
Παράδειγμα 3
• Έστω η γραμματική G=(V,Σ,R,E) με:
– V={E}∪Σ
– Σ={ x, y, +, ⋅ , (, ) }
– R={E(E), EE+E, ΕE⋅E, Ex, Ey}
• Έγκυρες "λέξεις" που παράγονται είναι οι:
– x+y
– x+x⋅y
– (x⋅y+x⋅x) ⋅(x+y⋅ (x+y⋅y))
– κλπ
E=Έκφραση
53
Γιάννης Ρεφανίδης 105
Παράδειγμα 3
(συνέχεια...)
• (x⋅y+x⋅x) ⋅(x+y⋅ (x+y⋅y))
Ε⇒Ε⋅Ε
⇒ (Ε)⋅Ε
⇒ (Ε)⋅(Ε)
⇒ (Ε+Ε)⋅(Ε)
⇒ (Ε⋅Ε+Ε)⋅(Ε)
⇒ (Ε⋅Ε+Ε⋅Ε)⋅(Ε)
⇒ (Ε⋅Ε+Ε⋅Ε)⋅(Ε+Ε)
⇒ (Ε⋅Ε+Ε⋅Ε)⋅(Ε+Ε⋅Ε)
⇒ (Ε⋅Ε+Ε⋅Ε)⋅(Ε+Ε⋅(Ε))
⇒ (Ε⋅Ε+Ε⋅Ε)⋅(Ε+Ε⋅(Ε+Ε))
⇒ (Ε⋅Ε+Ε⋅Ε)⋅(Ε+Ε⋅(Ε+Ε⋅Ε))
...........
...........
(x⋅y+x⋅x) ⋅(x+y⋅ (x+y⋅y))
Γιάννης Ρεφανίδης 106
Συντακτικό δέντρο (Parse Tree)
• Πρόκειται για μια διαγραμματική αναπαράσταση, με μορφή δέντρου, του τρόπου που παράγεται μια λέξη εφαρμόζοντας τους κανόνες της γραμματικής.
• Κάθε κόμβος του αντιστοιχεί σε ένα σύμβολο.
• Τα παιδιά ενός κόμβου προκύπτουν από την εφαρμογή ενός κανόνα στο σύμβολο του κόμβου.
• Τα φύλλα του δέντρου είναι τερματικά σύμβολα.
• Η λέξη προκύπτει παραθέτοντας όλα τα φύλλα του δέντρου, διαβάζοντάς τα από αριστερά προς τα δεξιά.
54
Γιάννης Ρεφανίδης 107
Παράδειγμα συντακτικού δέντρου (για την παραγωγή της διαφάνειας 105)
(x⋅y+x⋅x) ⋅(x+y⋅(x+y⋅y))
Ε
Ε ⋅ Ε
Ε + Ε Ε + Ε
Ε ⋅ Ε Ε ⋅ Ε Ε ⋅ Ε
( Ε )
Ε + Ε
Ε ⋅ Ε
x y x x
x
y
x
y y
Γιάννης Ρεφανίδης 108
Εναλλακτικές Παραγωγές
• Είναι δυνατόν μια λέξη να παράγεται με περισσότερους από έναν τρόπους από τους κανόνες μιας γραμματικής (και άρα να έχει εναλλακτικά συντακτικά δέντρα).
• Για παράδειγμα, η λέξη x+x⋅y μπορεί να παραχθεί από τη γραμματική του παραδείγματος 3 ως εξής: – E ⇒ E+E ⇒ E+E⋅E ⇒ ... ⇒ x+x⋅y
• αλλά και ως εξής: – E ⇒ E⋅E ⇒ E+E⋅E ⇒ ... ⇒ x+x⋅y
• Οι γραμματικές που επιτρέπουν εναλλακτικές παραγωγές λέγονται διφορούμενες (ambiguous).
55
Γιάννης Ρεφανίδης 109
Αριστερότερη Παραγωγή
(leftmost derivation) • Ως αριστερότερη παραγωγή μιας λέξης ορίζεται
αυτή η οποία σε κάθε βήμα αντικαθιστά το αριστερότερο μη-τερματικό σύμβολο της λέξης.
• Στο παράδειγμα της λέξης x+x⋅y, αριστερότερη παραγωγή είναι η: – E ⇒ EE ⇒ E+EE ⇒ x+EE ⇒ x+xE ⇒ x+xy
• Παρόμοια ορίζεται η δεξιότερη παραγωγή (rightmost derivation). – Για κάθε λέξη, εφόσον υπάρχει μια παραγωγή, τότε
υπάρχουν σίγουρα μια αριστερότερη και μια δεξιότερη παραγωγή.
Γιάννης Ρεφανίδης 110
Κανονικές Γραμματικές
• Μια γραμματική λέγεται κανονική, εάν στο δεξιό
μέρος κάθε κανόνα της υπάρχει το πολύ ένα μη-
τερματικό σύμβολο, και αυτό είναι πάντα στην
τελευταία θέση.
• Τα σύνολα των γλωσσών των κανονικών
γραμματικών και των γλωσσών των κανονικών
εκφράσεων (ή των πεπερασμένων αυτομάτων)
ταυτίζονται.
56
Αυτόματα Στοίβας
(Pushdown Automata)
Γιάννης Ρεφανίδης 112
Η στοίβα (Stack)
• Η στοίβα είναι μια δομή δεδομένων, όπου μπορεί
το αυτόματο να αποθηκεύει προσωρινά σύμβολα.
• Έχει άπειρη χωρητικότητα.
• Η λογική λειτουργίας της στοίβας είναι η εξής: Τα
σύμβολα αποθηκεύονται σε μια σειρά, με τρόπο
τέτοιο ώστε το τελευταίο σύμβολο που
αποθηκεύτηκε να είναι το πρώτο που θα εξαχθεί.
57
Γιάννης Ρεφανίδης 113
Σχηματική αναπαράσταση
αυτομάτου στοίβας
Πεπερασμένο
αυτόματο
Είσοδος συμβόλων Αποδοχή
ή
απόρριψη
Στοίβα a b a
Γιάννης Ρεφανίδης 114
Λογική λειτουργίας (1/2)
• Σε κάθε βήμα το αυτόματο μπορεί:
– να εισάγει ένα σύμβολο στην κορυφή της
στοίβας (push),
– να εξάγει το σύμβολο από την κορυφή της
στοίβας (pop), ή τέλος
– να αντικαταστήσει το σύμβολο στην κορυφή
της στοίβας με ένα άλλο.
58
Γιάννης Ρεφανίδης 115
Λογική λειτουργίας (2/2)
• Η επόμενη κατάσταση του αυτομάτου καθορίζεται
από:
– την τρέχουσα κατάστασή του,
– το σύμβολο που διαβάζει από την είσοδό του, και τέλος
– το σύμβολο στην κορυφή της στοίβας.
• Το αυτόματο τερματίζει επιτυχώς και αποδέχεται
τη λέξη που διάβασε στην είσοδό του αν στο
τέλος βρεθεί σε τελική κατάσταση και η στοίβα
είναι άδεια.
Γιάννης Ρεφανίδης 116
Τυπικός ορισμός αυτομάτου στοίβας
• Ένα αυτόματο στοίβας Μ ορίζεται ως μια εξάδα Μ=(Κ,Σ,Γ,Δ,s,F) όπου:
– Κ είναι ένα πεπερασμένο σύνολο καταστάσεων.
– Σ είναι το αλφάβητο εισόδου.
– Γ είναι το αλφάβητο της στοίβας.
– s ∈ Κ είναι η αρχική κατάσταση.
– F ⊆ K είναι το σύνολο των τελικών καταστάσεων.
– Δ είναι η σχέση μετάβασης από το KxΣxΓ στο ΚxΓ.
59
Γιάννης Ρεφανίδης 117
Παρατηρήσεις
• Ο ορισμός που δόθηκε στην προηγούμενη
διαφάνεια είναι γενικός και άρα περιλαμβάνει και
τα μη-ντετερμινιστικά αυτόματα στοίβας.
• Θα δούμε παρακάτω ότι δεν υπάρχει ισοδυναμία
ντετερμινιστικών και μη-ντετερμινιστικών
αυτομάτων στοίβας.
Γιάννης Ρεφανίδης 118
Παράδειγμα 1
• Να σχεδιαστεί ένα αυτόματο στοίβας που να
δέχεται τη γλώσσα L={wcwR| w∈{a,b}*}
• Έχουμε Μ=(Κ,Σ,Γ,Δ,s,F) όπου:
– Κ={s,f}
– Σ={a,b,c}
– Γ={a,b}
– F={f}
60
Γιάννης Ρεφανίδης 119
Παράδειγμα 1
(συνέχεια...) • Η σχέση Δ ορίζεται ως εξής:
– Δ(s,a,ε) = (s,a)
– Δ(s,b,ε) = (s,b)
– Δ(s,c,ε) = (f,ε)
– Δ(f,a,a)=(f,ε)
– Δ(f,b,b)=(f,ε)
• Το αυτόματο είναι ντετερμινιστικό.
s f start c, ε/ε
a, ε/a
b, ε/b
a, a/ε
b, b/ε
Οι επιγραφές πάνω στα
βέλη δηλώνουν κατά σειρά
το σύμβολο εισόδου, το
σύμβολο που εξέρχεται από
τη στοίβα και το σύμβολο
που εισέρχεται στη στοίβα.
Γιάννης Ρεφανίδης 120
Παράδειγμα 2
• Να σχεδιαστεί ένα αυτόματο στοίβας που να
δέχεται τη γλώσσα L={wwR| w∈{a,b}*}
• Έχουμε Μ=(Κ,Σ,Γ,Δ,s,F) όπου:
– Κ={s,f}
– Σ={a,b,c}
– Γ={a,b}
– F={f}
61
Γιάννης Ρεφανίδης 121
Παράδειγμα 2
(συνέχεια...) • Η σχέση Δ ορίζεται ως εξής:
– Δ(s,a,ε) = (s,a)
– Δ(s,b,ε) = (s,b)
– Δ(s,ε,ε) = (f,ε)
– Δ(f,a,a)=(f,ε)
– Δ(f,b,b)=(f,ε)
• Το αυτόματο είναι μη-ντετερμινιστικό.
s f start ε, ε/ε
a, ε/a
b, ε/b
a, a/ε
b, b/ε
Γιάννης Ρεφανίδης 122
Παρατήρηση
• Για να είναι ένα αυτόματο στοίβας
ντετερμινιστικό θα πρέπει:
– Να μην υπάρχουν διαφορετικές μεταβάσεις για
το ίδιο σύμβολο εισόδου
(συμπεριλαμβανομένου του ε) και την ίδια
κατάστασης της στοίβας.
62
Αυτόματα Στοίβας και Γραμματικές
χωρίς Συμφραζόμενα
Γιάννης Ρεφανίδης 124
Ισοδυναμία
• Η κλάση των γλωσσών που είναι δεκτές από
αυτόματα στοίβας είναι ακριβώς η κλάση των
γλωσσών χωρίς συμφραζόμενα.
– γραμματικής ⇒ αυτόματο στοίβας
– αυτόματο στοίβας ⇒ γραμματική
63
Γιάννης Ρεφανίδης 125
Γραμματική ⇒ Αυτόματο Στοίβας
• Έστω η γραμματική G=(V,Σ,R,S).
• Κατασκευάζουμε το αυτόματο M=({p,q},Σ,V,Δ,p,{q}), όπου η Δ έχει τις εξής μεταβάσεις:
– (p,ε,ε)(q,S)
– (q,ε,Α)(q,x) για κάθε κανόνα Ax
– (q,a,a)(q,ε) για κάθε a∈Σ.
• Το αυτόματο που προκύπτει μπορεί να είναι μη ντετερμινιστικό (εξαρτάται από τη γραμματική).
Γιάννης Ρεφανίδης 126
Γραμματική ⇒ Αυτόματο Στοίβας
Παράδειγμα (1/2)
• Έστω η γλώσσα {wcwR: w∈{a,b}*} που ορίζεται
από τη γραμματική G=(V,Σ,R,S) με:
– V={S,a,b,c}
– Σ={a,b,c}
– R={SaSa, SbSb, Sc}
64
Γιάννης Ρεφανίδης 127
Γραμματική ⇒ Αυτόματο Στοίβας
Παράδειγμα (2/2)
p q start ε, ε/S
ε, S/aSa
ε, S/bSb
ε, S/c a, a/ε
b, b/ε c, c/ε
Γιάννης Ρεφανίδης 128
Αυτόματο Στοίβας ⇒ Γραμματική
• Εκτός ύλης...
65
Ιδιότητες Γραμματικών
χωρίς Συμφραζόμενα
Γιάννης Ρεφανίδης 130
Ιδιότητες Γραμματικών
χωρίς Συμφραζόμενα • Ιδιότητες Κλειστότητας
• Ιδιότητες Περιοδικότητας
• Αλγοριθμικές ιδιότητες
66
Γιάννης Ρεφανίδης 131
Ιδιότητες Κλειστότητας
• Οι γλώσσες χωρίς συμφραζόμενα είναι κλειστές
ως προς την ένωση, την παράθεση και Kleene
Star.
• Οι γλώσσες χωρίς συμφραζόμενα δεν είναι
κλειστές ως προς την τομή και τη συμπλήρωση.
Γιάννης Ρεφανίδης 132
Ένωση
• Έστω G1=(V1, Σ1, R1, S1) και G2=(V2, Σ2, R2, S2).
Η γραμματική G για την οποία ισχύει L(G)=L(G1)
L(G2) ορίζεται ως εξής:
– G=(V1 V2 {S},
Σ1 Σ2,
R1 R2 {SS1,S S2},
S)
67
Γιάννης Ρεφανίδης 133
Παράθεση
• Έστω G1=(V1, Σ1, R1, S1) και G2=(V2, Σ2, R2, S2).
Η γραμματική G για την οποία ισχύει
L(G)=L(G1)L(G2) ορίζεται ως εξής:
– G=(V1 V2 {S},
Σ1 Σ2,
R1 R2 {SS1S2},
S)
Γιάννης Ρεφανίδης 134
Kleene Star
• Έστω G1=(V1, Σ1, R1, S1). Η γραμματική G για την
οποία ισχύει L(G)=L(G1)* ορίζεται ως εξής:
– G=(V1,
Σ1,
R1 {S1ε, S1S1S1},
S1)
68
Γιάννης Ρεφανίδης 135
Ιδιότητες Περιοδικότητας
Θεώρημα άντλησης για γραμματικές • Έστω G μια γραμματική χωρίς συμφραζόμενα.
Τότε υπάρχει ένας αριθμός Κ (που εξαρτάται από
την G) τέτοιος ώστε κάθε συμβολοσειρά w∈L(G)
με |w|>K να μπορεί να γραφεί ως w=uvxyz,
|v|+|y|>0 και uvnxynz ∈ L(G) για κάθε n≥0.
Γιάννης Ρεφανίδης 136
Παράδειγμα
• Η γλώσσα L={anbncn : n≥0} δεν είναι χωρίς
συμφραζόμενα.
• Έστω μια αρκετά μεγάλη λέξη w∈L, τέτοια ώστε
|w|>K ή ισοδύναμα n>K/3.
• w=uvxyz με vε ή yε.
• Σύμφωνα με το θεώρημα άντλησης, θα πρέπει και
η λέξη uv2xy2z να ανήκει στην L, κάτι όμως που
είναι φανερό ότι δεν μπορεί να ισχύει.
69
Γιάννης Ρεφανίδης 137
Αλγοριθμικές Ιδιότητες (1/2)
• Υπάρχουν αλγόριθμοι που απαντούν στα
παρακάτω ερωτήματα σχετικά με τις γραμματικές
χωρίς συμφραζόμενα:
– Δεδομένης γραμματικής G και συμβολοσειράς
w, ανήκει η w στην L(G);
– Είναι η L(G) κενή;
Γιάννης Ρεφανίδης 138
Αλγοριθμικές Ιδιότητες (2/2)
• Δεν υπάρχουν αλγόριθμοι που να απαντούν πάντα
στις παρακάτω ερωτήσεις:
– Έχουν δύο γραμματικές την ίδια γλώσσα;
– Μπορεί μια γραμματική να παράγει όλες τις
λέξεις του αλφαβήτου της;
– Είναι η τομή των γλωσσών δύο γραμματικών
κενό σύνολο;
– Είναι μια γραμματική διφορούμενη;
70
Ντετερμινιστικά Αυτόματα
Στοίβας
Γιάννης Ρεφανίδης 140
Ντετερμινιστικά Αυτόματα
Στοίβας (1/2)
• Ένα αυτόματο στοίβας λέγεται ντετερμινιστικό εάν υπάρχει μια το πολύ μετάβαση για κάθε συνδυασμό εισόδου και κατάστασης της στοίβας.
• Υπάρχουν γλώσσες χωρίς συμφραζόμενα που δεν γίνονται δεκτές από ντετερμινιστικά αυτόματα στοίβας. – L={wwR}
• Ορίζουμε ως ντετερμινιστικές γλώσσες χωρίς συμφραζόμενα αυτές που γίνονται δεκτές από ντετερμινιστικά αυτόματα στοίβας.
71
Γιάννης Ρεφανίδης 141
Ντετερμινιστικά Αυτόματα
Στοίβας (2/2)
• Για τις γνωστές γλώσσες προγραμματισμού
μπορεί κανείς να κατασκευάσει ντετερμινιστικά
αυτόματα στοίβας που να δέχονται τα
συντακτικώς σωστά προγράμματα αυτών.
• Τα προγράμματα αυτά ονομάζονται συντακτικοί
αναλυτές (parsers).
Μηχανές Turing (Turing machines)
72
Γιάννης Ρεφανίδης 143
Σχηματική αναπαράσταση
Πεπερασμένο
αυτόματο
a b a c a b # # # # #
Ταινία απείρου μήκους
προς τη μία κατεύθυνση.
Κεφαλή ανάγνωσης/εγγραφής
Γιάννης Ρεφανίδης 144
Τυπικός ορισμός μηχανής Turing
• Μια μηχανή Turing ορίζεται από μια τετράδα
Μ=(Κ,Σ,δ,s) όπου:
– Κ είναι ένα συνόλο από καταστάσεις.
– Σ είναι ένα αλφάβητο που μεταξύ άλλων
περιέχει το ειδικό σύμβολο #.
– s∈K είναι η αρχική κατάσταση.
– δ είναι μια συνάρτηση από το KxΣ στο
K {h} x Σ {L,R}.
73
Γιάννης Ρεφανίδης 145
Παρατηρήσεις
• Υπάρχει πάντα η ειδική κατάσταση h που
ονομάζεται κατάσταση τερματισμού. Συνήθως δεν
την αναφέρουμε στο σύνολο Κ.
• Το σύμβολο # ονομάζεται κενό σύμβολο.
• Οι ειδικοί χαρακτήρες L και R συμβολίζουν
μετακίνηση της κεφαλής ανάγνωσης/εγγραφής
κατά μία θέση αριστερά και δεξιά αντίστοιχα.
Γιάννης Ρεφανίδης 146
Τρόπος λειτουργίας (1/4)
• Αρχικά η μηχανή Turing βρίσκεται στην κατάσταση s και η κεφαλή ανάγνωσης/εγγραφής βρίσκεται στο αριστερό άκρο της ταινίας.
• Σε κάθε βήμα η μηχανή Turing μπορεί να μεταβεί σε μία νέα κατάσταση ή να παραμείνει στην ίδια (όπως συμβαίνει σε όλα τα αυτόματα).
• Επιπλέον, σε κάθε βήμα η κεφαλή ανάγνωσης/εγγραφής μπορεί εναλλακτικά:
– Να γράψει ένα σύμβολο στην τρέχουσα θέση
– Να μετακινηθεί μία θέση αριστερά ή δεξιά.
74
Γιάννης Ρεφανίδης 147
Τρόπος λειτουργίας (2/4)
• Αρχικά στην ταινία είναι γραμμένα κάποια
σύμβολα. Αυτά είναι συγκεντρωμένα στο
αριστερό άκρο της ταινίας. Δεξιά από αυτά
υπάρχουν μόνο χαρακτήρες κενού (#).
• H κεφαλή ανάγνωσης/εγγραφής δείχνει αρχικά σε
κάποια προκαθορισμένη θέση της ταινίας.
• Η μηχανή Turing δεν διαβάζει άλλα σύμβολα
κατά τη λειτουργία της παρά μόνο αυτά που είναι
γραμμένα εξαρχής στην ταινία.
Γιάννης Ρεφανίδης 148
Τρόπος λειτουργίας (3/4)
• Σε κάθε βήμα η μηχανή Turing αποφασίζει ντετερμινιστικά σε ποια κατάσταση θα μεταβεί και τι ενέργεια θα εκτελέσει στην ταινία, βάσει της τρέχουσας κατάστασής της και του συμβόλου που διαβάζει από την ταινία (όπως αυτά καθορίζονται από τη συνάρτηση μετάβασης δ).
• Η μηχανή τερματίζει είτε όταν εισέλθει στη κατάσταση τερματισμού h.
• Αν η κεφαλή επιχειρήσει να μετακινήθεί αριστερότερα από το αριστερό άκρο της ταινίας, τότε η μηχανή Turing διακόπτει τη λειτουργία της και δεν επιστρέφει καμία απάντηση.
75
Γιάννης Ρεφανίδης 149
Τρόπος λειτουργίας (4/4)
• Η μηχανή Turing δεν έχει "καλές" και "κακές" τελικές καταστάσεις.
• Όταν η μηχανή Turing τερματίσει (εισερχόμενη στην κατάσταση τερματισμού h), τότε η "απάντηση" είναι ό,τι υπάρχει στην ταινία.
• Με αυτό τον τρόπο η μηχανή Turing μπορεί να δίνει σύνθετες απαντήσεις (και όχι μονολεκτικές της μορφής ΝΑΙ/ΟΧΙ, όπως συνέβαινε με τα απλά αυτόματα), όπως για παράδειγμα: – Το ημίτονο ενός αριθμού
– Πόσες φορές εμφανίζεται ένας χαρακτήρας μέσα σε μια λέξη.
Γιάννης Ρεφανίδης 150
Παράδειγμα
• Μια μηχανή που σβήνει τη λέξη εισόδου.
– Κ={s,q}
– Σ={a,#}
• δ(s,a) = (q,#)
• δ(s,#) = (h,#)
• δ(q,a) = (s,a)
• δ(q,#) = (s,R)
• Αρχικά η κεφαλή είναι στο αριστερό άκρο της ταινίας.
Δεν εκτελείται
ποτέ.
76
Γιάννης Ρεφανίδης 151
Παράδειγμα (συνέχεια...)
• Ή και διαγραμματικά...
s start a/#
q
h
#/#
#/R
a/a Δεν εκτελείται
ποτέ
Το πρώτο σύμβολο είναι
αυτό που διαβάζει η
μηχανή, ενώ το δεύτερο
είναι η κίνηση που εκτελεί
ή το σύμβολο που γράφει.
Γιάννης Ρεφανίδης 152
Συνολική κατάσταση
• Η τρέχουσα κατάσταση υπολογισμού μιας μηχανής Turing καθορίζεται πλήρως από: – Την τρέχουσα κατάστασή της
– Τη λέξη που υπάρχει στην ταινία, αριστερά από την κεφαλή.
– Το χαρακτήρα που υπάρχει στη θέση της κεφαλής.
– Τη λέξη που υπάρχει από την ταινία δεξιά από την κεφαλή και μέχρι τον τελευταίο μη-κενό χαρακτήρα.
• Συμβολίζεται με (q,w,a,u) ή (q,wau).
• Όταν αναφερόμαστε μόνο στην κατάσταση της ταινίας, γράφουμε wau.
77
Γιάννης Ρεφανίδης 153
Μεταβάσεις
• Μεταξύ συνολικών καταστάσεων ορίζεται η
σχέση ⊦, η οποία δηλώνει ότι η μια κατάσταση
παράγεται από την άλλη σε ένα βήμα.
• Η σχέση ⊦* δηλώνει ότι η μια κατάσταση
παράγεται από την άλλη σε πολλά βήματα.
Γιάννης Ρεφανίδης 154
Παράδειγμα
• Έτσι, στο παράδειγμα των διαφανειών 150-151,
και αν υποθέσουμε ότι αρχικά υπάρχουν 4
σύμβολα a στην ταινία, έχουμε:
– (s,aaaa) ⊦ (q,#aaa) ⊦ (s,#aaa) ⊦ (q,##aa) ⊦
(s,##aa) ⊦ (q,###a) ⊦ (s,###a) ⊦ (q,####) ⊦
(s,#####) ⊦ (h,#####)
• Ή και πιο σύντομα:
– (s,aaaa) ⊦* (h,#####)
78
Υπολογισμοί με μηχανές Turing
Γιάννης Ρεφανίδης 156
Συμβάσεις (1/2)
• Στο εξής θα θεωρούμε ότι:
– Η συμβολοσειρά εισόδου περικλείεται από ένα κενό σε κάθε πλευρά.
– Η συμβολοσειρά εισόδου (μαζί με τα κενά) είναι γραμμένη στο αριστερότερο άκρο της ταινίας.
– Η κεφαλή βρίσκεται αρχικά στο κενό στο δεξιό άκρο της συμβολοσειράς εισόδου.
– Η μηχανή ξεκινά τη λειτουργία της από την αρχική της κατάσταση.
79
Γιάννης Ρεφανίδης 157
Συμβάσεις (2/2)
• Θα λέμε ότι η μηχανή Turing τερμάτισε με
είσοδο w, εάν (s,#w#)⊦*(h,x) για κάποια λέξη x.
• Θα λέμε ότι η μηχανή Turing κρέμασε με είδοσο
w, εάν ξεκινώντας από τη συνολική κατάσταση
(s,#w#) η κεφαλή μετακινηθεί αριστερότερα από
το αριστερό άκρο της ταινίας.
Γιάννης Ρεφανίδης 158
Turing-υπολογίσιμες συναρτήσεις
• Έστω Σ0 και Σ1 αλφάβητα που δεν περιέχουν το κενό σύμβολο #.
• Έστω f μια συνάρτηση από το Σ0* στο Σ1*.
• Λέμε ότι μια μηχανή Turing Μ υπολογίζει τη συνάρτηση f, εάν (s,#w#) ⊦* (h,#u#) για κάθε w∈Σ0, u∈Σ1, τέτοια ώστε f(w)=u.
• Εάν υπάρχει τέτοια μηχανή Turing, η f λέγεται Turing-υπολογίσιμη συνάρτηση.
80
Γιάννης Ρεφανίδης 159
Παράδειγμα Α
• Έστω Σ={a,b} και μια συνάρτηση f:Σ*Σ*,
τέτοια ώστε για κάθε w να ισχύει f(w)=w, όπου το
w προκύπτει εάν αντικαταστήσουμε όλα τα a του
w με b και αντίστροφα.
Γιάννης Ρεφανίδης 160
Παράδειγμα Α (συνέχεια...)
q0
start q1 h
#/L
a/L
b/L q2
a/b
b/a
#/R
a/R
b/R
#/#
Παράδειγμα υπολογισμού:
(q0,#aba#) ⊦ (q1,#aba#) ⊦ (q0,#abb#) ⊦ (q1,#abb#) ⊦ (q0,#aab#) ⊦
(q1,#aab#) ⊦ (q0,#bab#) ⊦ (q1,#bab#) ⊦ (q2,#bab#) ⊦ (q2,#bab#) ⊦
(q2,#bab#) ⊦ (q2,#bab#) ⊦ (h,#bab#)
81
Γιάννης Ρεφανίδης 161
Παράδειγμα Β
• Έστω f η συνάρτηση διαδοχής f(n)=n+1.
• Θεωρώντας το αλφάβητο Σ={Ι,#} και την
αντιστοίχιση n↔In και n+1↔In+1,
κατασκευάζουμε μια μηχανή Turing που
προσθέτει ένα σύμβολο I στα δεξιά κάθε ομάδας
τέτοιων συμβόλων.
Γιάννης Ρεφανίδης 162
Παράδειγμα Β (συνέχεια...)
q0
start h
I/R
#/I
Παράδειγμα υπολογισμού:
(q0,#III#) ⊦ (q0,#IIII) ⊦ (h,#IIII#)
Ακόμη ένα παράδειγμα υπολογισμού:
(q0,##) ⊦ (q0,#I) ⊦ (h,#I#)
Και ένα παράδειγμα λάθος υπολογισμού:
(q0,#III) ⊦ (h,#III#)
82
Παραλλαγές της βασικής
μηχανής Turing
Γιάννης Ρεφανίδης 164
Παραλλαγές της
βασικής μηχανής Turing (1/2)
• Θα μπορούσε κανείς να φανταστεί πιο πολύπλοκες μηχανές Turing, ελπίζοντας ότι αυτές θα είχαν περισσότερες δυνατότητες.
• Μερικά παραδείγματα: – Η ταινία να είναι άπειρη και προς τις δύο
κατευθύνσεις.
– Να υπάρχουν πολλές ταινίες.
– Να υπάρχουν πολλές κεφαλές ανάγνωσης/εγγραφής σε κάθε ταινία.
– Οι ταινίες να είναι διδιάστατες αντί για μονοδιάστατες.
– Όλοι οι δυνατοί συνδυασμοί των παραπάνω.
– κλπ
83
Γιάννης Ρεφανίδης 165
Παραλλαγές της
βασικής μηχανής Turing (2/2)
• Αποδεικνύεται (η απόδειξη παραλείπεται) ότι όλες
αυτές οι παραλλαγές της βασικής μηχανής Turing
είναι εντελώς ισοδύναμες με τη βασική μηχανή
Turing που έχουμε περιγράψει στις προηγούμενες
διαφάνειες.
Γιάννης Ρεφανίδης 166
Μη-ντετερμινιστικές μηχανές Turing (1/2)
• Θα μπορούσαμε να κατασκευάσουμε μη-
ντετερμινιστικές μηχανές Turing, κατά τρόπο
ανάλογο με τα μη-ντετερμινιστικά αυτόματα.
• Επειδή μια μη-ντετερμινιστική μηχανή Turing
μπορεί να γράψει διαφορετικό αποτέλεσμα στην
ταινία για την ίδια είσοδο, δεν μπορούμε να
χρησιμοποιήσουμε το αποτέλεσμα ως κριτήριο
σύγκρισης μη-ντετερμινιστικών και
ντετερμινιστικών μηχανών Turing.
84
Γιάννης Ρεφανίδης 167
Μη-ντετερμινιστικές μηχανές Turing (2/2)
• Χρησιμοποιούμε ως κριτήριο σύγκρισης το
γεγονός εάν μια μη-ντετερμινιστική μηχανή
τερματίζει ή όχι (π.χ. κρεμάει ή δεν τερματίζει
ποτέ) για δεδομένη είσοδο.
• Υπό αυτό το πρίσμα, για κάθε μη-ντετερμινιστική
μηχανή Turing υπάρχει μια αντίστοιχη
ντετερμινιστική.
Συνδυασμοί μηχανών Turing
85
Γιάννης Ρεφανίδης 169
Συνδυασμός δύο μηχανών
• Έστω δύο μηχανές Μ1 και Μ2. Ο συμβολισμός >Μ1Μ2 σημαίνει τα εξής: – Ξεκινά τον υπολογισμό η Μ1.
– Η Μ1 τερματίζει.
– Αμέσως μετά ξεκινά τον υπολογισμό της η Μ2.
– Η Μ2 τερματίζει.
– Το συνολικό αποτέλεσμα της συνδυασμένης μηχανής Turing είναι ό,τι έμεινε στην ταινία μετά τον τερματισμό και της M2.
• Θεωρούμε ότι οι δύο μηχανές δεν κρεμάνε, εφόσον η λέξη εισόδου τους πληρεί κάποιες προϋποθέσεις (που εξαρτώνται κάθε φορά από την εκάστοτε μηχανή).
Γιάννης Ρεφανίδης 170
Σχήματα μηχανών
• Μπορούμε να συνδυάσουμε περισσότερες από δύο μηχανές, με τρόπο που θυμίζει λειτουργία πεπερασμένων αυτομάτων.
• Μετά τον τερματισμό της M1, θα ξεκινήσει είτε η Μ2 ή η Μ3, ανάλογα με το σύμβολο που είναι γραμμένο στη θέση που δείχνει η κεφαλή.
Μ1 Μ2
Μ3
a
b
• Αποδεικνύεται ότι κάθε σχήμα μηχανής είναι ισοδύναμο με μια μηχανή Turing.
86
Γιάννης Ρεφανίδης 171
Παράδειγμα (1/2)
• Έστω ότι η Μ1 εκτελεί πρόσθεση μεταξύ δύο ακεραίων αριθμών και η Μ2 εκτελεί πολλαπλασιασμό.
• Για να λειτουργήσουν σωστά, και οι δυο μηχανές "απαιτούν" οι δύο αριθμοί να βρίσκονται στα αριστερά της αρχικής θέσης της κεφαλής, με ένα κενό μεταξύ τους αλλά και εκατέρωθέν τους.
• Έστω pi οι καταστάσεις της Μ1 και qi οι καταστάσεις της M2, με p0 και q0 τις αρχικές καταστάσεις κάθε μηχανής.
• Επίσης, έστω hp και hq οι καταστάσεις τερματισμού των M1 και M2 αντίστοιχα.
Γιάννης Ρεφανίδης 172
Παράδειγμα (2/2)
• Εάν θέλαμε να υπολογίσουμε το αποτέλεσμα
2*(3+4) θα χρησιμοποιούσαμε το σχήμα μηχανών
>Μ1Μ2 με αρχική είσοδο την #ΙΙ#ΙΙΙ#ΙΙΙΙ# .
• Ο υπολογισμός θα πήγαινε περίπου ως εξής:
– (p0, #ΙΙ#ΙΙΙ#ΙΙΙΙ#)⊦*(hp, #ΙΙ#ΙΙΙΙΙΙΙ#)⊦
(q0, #ΙΙ#ΙΙΙΙΙΙΙ#)⊦*(hq, #ΙΙΙΙΙΙΙΙΙΙΙΙΙΙ#)
87
Θέση του Church
Γιάννης Ρεφανίδης 174
Θέση του Church
• Αλγόριθμος είναι οποιαδήποτε διαδικασία μπορεί να εκτελεστεί από κάποια μηχανή Turing. – Δεν πρόκειται για θεώρημα αλλά για θέση.
– Τίποτα δεν αποκλείει να καταρριφθεί στο μέλλον, εάν κατασκευαστεί ένα νέο μοντέλο υπολογισμού που θα μπορούσε να εκτελέσει στοιχειώδεις πράξεις που δεν μπορούν να εκτελέσουν οι σημερινοί υπολογιστές.
– Κβαντικοί υπολογιστές;
• Απεριόριστη υπολογιστική ισχύς μπορεί να επιτευχθεί μόνο με εφαρμογή πεπερασμένων πόρων για απεριόριστη χρονική περίοδο.
88
Γλώσσες και μηχανές Turing
Γιάννης Ρεφανίδης 176
Turing αποφασίσιμες γλώσσες
• Έστω μια γλώσσα L ⊆ Σ*.
• Έστω μια συνάρτηση χL: Σ*{Ⓨ,Ⓝ}, τέτοια
ώστε χL(w)=Ⓨ, εφόσον wL, αλλιώς χL(w)=Ⓝ.
• Εάν η συνάρτηση χL είναι Turing υπολογίσιμη,
τότε η γλώσσα L λέγεται Turing αποφασίσιμη.
89
Γιάννης Ρεφανίδης 177
...και με πιο απλά λόγια
• Με άλλα λόγια, αν για τη γλώσσα L ⊆ Σ* υπάρχει
μια μηχανή Turing, τέτοια ώστε κάθε φορά που
γράφουμε μια λέξη w του Σ* στην ταινία και
αφήνουμε τη μηχανή Turing να δουλέψει, η
μηχανή τερματίζει πάντα (χωρίς να κρεμάει)
γράφοντας στην ταινία είτε Ⓨ ή Ⓝ, ανάλογα με
το αν η λέξη w ανήκει ή όχι στη γλώσσα L
αντίστοιχα, τότε η γλώσσα L λέγεται Turing
αποφασίσιμη.
Γιάννης Ρεφανίδης 178
Turing αποδεκτές γλώσσες
• Έστω μια μηχανή Turing M και ένα αλφάβητο Σ. Λέμε ότι η Μ δέχεται (accepts) μια λέξη wΣ* εάν η Μ τερματίζει με είσοδο τη λέξη w.
• Έστω μια γλώσσα L Σ*.
• Εάν υπάρχει μια μηχανή Turing η οποία δέχεται τις λέξεις της L και μόνο αυτές, τότε η γλώσσα L λέγεται Turing αποδεκτή.
90
Γιάννης Ρεφανίδης 179
...και με πιο απλά λόγια
• Με άλλα λόγια, για να είναι μια γλώσσα Turing
αποδεκτή θα πρέπει να υπάρχει μια μηχανή
Turing που να τερματίζει πάντα με είσοδο λέξεις
της γλώσσας και να μην τερματίζει ποτέ με είσοδο
λέξεις που δεν ανήκουν στη γλώσσα.
• Η έννοια του "μη τερματισμού" σημαίνει ότι μια
μηχανή μπορεί να λειτουργεί επ' άπειρον χωρίς να
τερματίζει ούτε να κρεμάει.
Γιάννης Ρεφανίδης 180
Παράδειγμα αποδεκτής αλλά όχι
αποφασίσιμης γλώσσας • Έστω Σ={0,1,2,...,9}.
• Έστω η γλώσσα L , η οποία ορίζεται ως εξής: – L={w: η ακολουθία w εμφανίζεται κάπου μέσα στην ακολουθία
ψηφίων του π}.
• Μπορούμε να φτιάξουμε μια μηχανή Turing, η οποία ξεκινώντας με είσοδο το w ελέγχει με τη σειρά τα ψηφία του π, προσπαθώντας να βρει μέσα σε αυτά τη λέξη w.
• Εάν το w όντως εμφανίζεται μέσα στο π, η μηχανή θα σταματήσει.
• Εάν το w δεν εμφανίζεται μέσα στο π, η μηχανή δεν θα σταματήσει ποτέ (εμείς όμως ποτέ δεν θα είμαστε σίγουροι ότι το w δεν θα εμφανιστεί "παρακάτω"...).
• Άρα η γλώσσα L είναι αποδεκτή, δεν είναι όμως αποφασίσιμη.
91
Γιάννης Ρεφανίδης 181
Turing αποφασίσιμες
και Turing αποδεκτές γλώσσες • Κάθε γλώσσα που είναι Turing αποφασίσιμη είναι
και Turing αποδεκτή, αλλά όχι αντίστροφα.
Γραμματικές χωρίς περιορισμούς
92
Γιάννης Ρεφανίδης 183
Γραμματικές χωρίς περιορισμούς
• Οι γραμματικές στη γενική τους μορφή διαφέρουν από τις "γραμματικές ανεξάρτητες από τα συμφραζόμενα" κατά το ότι στο αριστερό μέρος των κανόνων μπορούν να υπάρχουν περισσότερα από ένα σύμβολα, ένα τουλάχιστον από τα οποία είναι μη-τερματικό.
– Π.χ.: 0A11BCD10E
• Ο παραπάνω κανόνας λέει ότι εάν σε μια λέξη συναντηθεί η ακολουθία συμβόλων 0A11B, αυτή μπορεί να αντικατασταθεί από την CD10E.
• Βλέπουμε ότι αντικατάσταση μπορεί να γίνει και στα τερματικά σύμβολα. Ωστόσο, το τελικό αποτέλεσμα πρέπει να αποτελείται μόνο από τερματικά σύμβολα.
Γιάννης Ρεφανίδης 184
Ορισμός Γραμματικής
• Γραμματική G ορίζεται μια τετράδα (V, Σ, R, S) όπου:
– V είναι ένα αλφάβητο
– Σ είναι το σύνολο των τερματικών συμβόλων, Σ V.
• V-Σ είναι τα μη-τερματικά σύμβολα.
– S, το αρχικό σύμβολο, είναι στοιχείο του V-Σ.
– R, το σύνολο των κανόνων, είναι μια σχέση από το V*(V-Σ)V* στο V*.
93
Γιάννης Ρεφανίδης 185
Παράδειγμα (1/2)
• Έστω η γραμματική για τη γλώσσα {anbncn: n≥1}:
– V={S,a,b,c,A,B,C,Ta,Tb,Tc}
– Σ={a,b,c}
– R= { SABCS, STc,
CAAC, CBBC, BAAB,
CTcTcc, CTcTbc,
BTbTbb, BTbTab,
ATaTbaa, Taε }
Γιάννης Ρεφανίδης 186
Παράδειγμα (2/2)
• Ας δούμε την παραγωγή της λέξης aabbcc:
• S⇒ABCS⇒ABCABCS⇒ABCABCTc⇒...⇒
AABBCCTc⇒AABBCTcc ⇒AABBTbcc⇒
AABTbbcc⇒AATabbcc⇒ATaabbcc⇒
Taaabbcc ⇒aabbcc
Σε κάθε βήμα, με υπογράμμιση φαίνονται
τα σύμβολα που παρήχθησαν από την
προηγούμενη παραγωγή ενώ με bold
φαίνονται τα γράμματα που
χρησιμοποιούνται για την επόμενη
παραγωγή.
94
Γιάννης Ρεφανίδης 187
Γραμματικές και μηχανές Turing
• Μια γλώσσα παράγεται από μια γραμματική, εάν και μόνο αν είναι Turing-αποδεκτή.
– Για κάθε μηχανή Turing, είναι εύκολο να κατασκευάσουμε μια γραμματική που να "μιμείται" τις ντετερμινιστικές μεταβάσεις της μηχανής.
– Για κάθε γραμματική, μπορούμε να φτιάξουμε μια μηχανή Turing που να ελέγχει όλες τις μη-ντετερμινιστικές παραγωγές της γραμματικής, ξεκινώντας από τις συντομότερες παραγωγές. Εάν μια λέξη παράγεται από τη γραμματική, η μηχανή θα το ανακαλύψει. Εάν μια λέξη δεν παράγεται από τη γραμματική, η μηχανή θα αναγκαστεί να λειτουργεί επ' άπειρον.
Καθολική μηχανή Turing
(Universal Turing Machine)
95
Γιάννης Ρεφανίδης 189
Κωδικοποίηση μηχανής Turing (1/3)
• Έστω ότι αριθμούμε τις καταστάσεις μιας μηχανής Turing ξεκινώντας από το 1 (λαμβάνοντας υπόψη και την κατάσταση h).
– Έτσι η τρίτη κατάσταση της μηχανής θα μπορούσε να συμβολίζεται με ΙΙΙ (ή Ι3 για συντομία).
• Όμοια αριθμούμε τα σύμβολα του αλφαβήτου μιας μηχανής Turing (λαμβάνοντας υπόψη και τα L και R) ξεκινώντας από το 1.
– Έτσι το τέταρτο σύμβολο του αλφαβήτου θα συμβολιζόταν με ΙΙII (ή Ι4 για συντομία).
Γιάννης Ρεφανίδης 190
Κωδικοποίηση μηχανής Turing (2/3)
• Για να περιγράψουμε μια μετάβαση πρέπει να
δώσουμε την τρέχουσα κατάσταση, το τρέχον
σύμβολο, την επόμενη κατάσταση και την
επόμενη κίνηση της κεφαλής.
• Έτσι μια μετάβαση μπορεί να περιγραφεί με
τέσσερις αριθμούς. Για παράδειγμα:
• cIIIcIIIIcIIcIIIc ή πιο σύντομα cI3cI4cI2cI3c
– Χρησιμοποιούμε το σύμβολο c για να διαχωρίζουμε
αριθμούς μεταξύ τους.
96
Γιάννης Ρεφανίδης 191
Κωδικοποίηση μηχανής Turing (3/3)
• Για να περιγράψουμε πλήρως μια μηχανή Turing πρέπει να δώσουμε την αρχική της κατάσταση και όλες τις μεταβάσεις.
• Για παράδειγμα: – cI3ccI3cI3cIcI5ccI3cI5cI3cI2ccI3cI8cI3cI2cc
• Στην παραπάνω περιγραφή, αρχική είναι η τρίτη κατάσταση, ενώ δίνονται και τρεις μεταβάσεις. Η πρώτη μετάβαση ορίζει ότι εάν η μηχανή είναι στην τρίτη κατάσταση και διαβάσει το τρίτο σύμβολο, θα μεταβεί στην πρώτη κατάσταση και θα γράψει στην ταινία το πέμπτο σύμβολο. – Συνήθως το πρώτο και το δεύτερο "σύμβολο" είναι οι μετακινήσεις
της κεφαλής L και R ενώ η πρώτη κατάσταση είναι η h.
Γιάννης Ρεφανίδης 192
Κωδικοποίηση λέξεων
• Έστω w μια λέξη του αλφαβήτου Σ μιας μηχανής Turing.
• Μπορούμε να αναπαραστήσουμε την w χρησιμοποιώντας την αναπαράσταση που είδαμε στις προηγούμενες διαφάνειες ως εξής: – ρ(w)=cIIIcIIIIIIcIIIIcIIIcIIIIIc
• Δηλαδή η w αποτελείται από 5 σύμβολα, τα οποία είναι το 3ο, το 6ο, το 4ο, το 3ο και το 5ο αντίστοιχα σύμβολα του αλφαβήτου (θεωρώντας πάντα ως δύο πρώτα σύμβολα τα L και R, τα οποία φυσικά δεν μπορούν να εμφανίζονται στη w).
97
Γιάννης Ρεφανίδης 193
Καθολική μηχανή Turing (1/3)
• Θα θέλαμε να κατασκευάσουμε μια μηχανή
Turing που να μπορεί να "προγραμματισθεί",
δηλαδή να μπορεί να εκτελεί διαφορετικές
λειτουργίες, ανάλογα με το "πρόγραμμα" με το
οποίο την τροφοδοτούμε.
• Μια τέτοια μηχανή ονομάζεται καθολική μηχανή
Turing και συμβολίζεται με U.
Γιάννης Ρεφανίδης 194
Καθολική μηχανή Turing (2/3)
• Έστω μια συγκεκριμένη μηχανή Turing M, η
οποία εκτελεί συγκεκριμένη λειτουργία, για
παράδειγμα όταν η Μ ξεκινήσει με είσοδο μια
λέξη w, τερματίζει με αποτέλεσμα μια λέξη u.
• Έστω ρ(Μ), ρ(w) και ρ(u) οι κωδικοποιήσεις των
Μ, w και u, σύμφωνα με όσα είδαμε στις
προηγούμενες διαφάνειες.
• Η καθολική μηχανή θα πρέπει, όταν ξεκινά με
είσοδο #ρ(Μ)ρ(w)# να τερματίζει με #ρ(u)#.
98
Γιάννης Ρεφανίδης 195
Καθολική μηχανή Turing (3/3)
• Αποδεικνύεται ότι η κατασκευή της καθολικής
μηχανής U είναι εφικτή και μάλιστα εύκολη!
Μη Αποφασισιμότητα
99
Γιάννης Ρεφανίδης 197
Το πρόβλημα του τερματισμού (1/4)
• Έστω το πρόγραμμα halts(P,X), γραμμένο σε οποιαδήποτε γλώσσα προγραμματισμού, το οποίο κάνει το εξής:
– Δέχεται ως είσοδο τον κώδικα ενός άλλου προγράμματος P της ίδιας γλώσσας.
– Δέχεται ως είσοδο την είσοδο X στο πρόγραμμα P.
– Απαντά με yes ή no εάν το πρόγραμμα P με είσοδο X θα σταματήσει κάποια στιγμή την εκτέλεσή του.
Γιάννης Ρεφανίδης 198
Το πρόβλημα του τερματισμού (2/4)
• Δεν μας ενδιαφέρει ο τρόπος λειτουργίας του
halts(P,X), δηλαδή εάν προσομοιώνει τη
λειτουργία του P ή πραγματοποιεί άλλες
αναλύσεις.
• Η ύπαρξη του προγράμματος halt(P,X) θα ήταν
ανεκτίμητης αξίας. Το πρόγραμμα θα μπορούσε
να χρησιμοποιηθεί για να ανιχνεύει bugs που
έχουν να κάνουν με μη-τερματισμό σε άλλα
προγράμματα.
100
Γιάννης Ρεφανίδης 199
Το πρόβλημα του τερματισμού (3/4)
• Αποδεικνύεται ότι τέτοιο πρόγραμμα δεν μπορεί να κατασκευαστεί.
• Πράγματι, έστω ότι υπήρχε το πρόγραμμα halts(P,X).
• Θα μπορούσαμε τότε να φτιάξουμε το πρόγραμμα diagonal(P) έτσι ώστε:
– diagonal(P):
• if halts(P,P)=yes then loop for ever
• else halt.
Γιάννης Ρεφανίδης 200
Το πρόβλημα του τερματισμού (4/4)
• Και τότε τίθεται το πρόβλημα:
– Τι γίνεται με την κλήση diagonal(diagonal);
– Εάν η κλήση αυτή σταματά, τότε η κλήση halts(diagonal, diagonal) θα απαντήσει yes, με αποτέλεσμα αυτή η κλήση να μην σταματήσει.
– Εάν η κλήση αυτή δεν σταματά, τότε η κλήση halts(diagonal, diagonal) θα απαντήσει no, με αποτέλεσμα αυτή η κλήση να σταματήσει.
• Το άτοπο προήλθε από την παραδοχή της ύπαρξης του προγράμματος halts. Άρα τέτοιο πρόγραμμα δεν υπάρχει.
101
Γιάννης Ρεφανίδης 201
Συμπέρασμα
• Δεν μπορεί να υπάρξει κανένα πρόγραμμα,
κανένας αλγόριθμος που να μπορεί να μας πει για
οποιοδήποτε άλλο πρόγραμμα εάν αυτό θα
τερματίσει ή όχι.
• Το πρόβλημα τερματισμού ανήκει στη κατηγορία
των μη-αποφασίσιμων προβλημάτων.
Γιάννης Ρεφανίδης 202
Turing αποφασίσιμες
και αποδεκτές γλώσσες • Αναφορά σε διαφάνειες 176-180.
• Αν L είναι μια Turing-αποφασίσιμη γλώσσα, το συμπλήρωμά της είναι επίσης Turing-αποφασίσιμη.
• Δεν είναι κάθε Turing-αποδεκτή γλώσσα Turing-αποφασίσιμη.
• Το συμπλήρωμα μιας Turing-αποδεκτής γλώσσας δεν είναι συνήθως Turing-αποδεκτή γλώσσα.
• Εάν ωστόσο μια γλώσσα και το συμπλήρωμά της είναι Turing-αποδεκτές, τότε οι γλώσσες αυτές είναι και Turing-αποφασίσιμες.
102
Γιάννης Ρεφανίδης 203
Μη αποφασίσιμα προβλήματα
• Ένα πρόβλημα λέγεται μη-αποφασίσιμο, εάν δεν
υπάρχει μηχανή Turing που να το αποφασίζει.
• Οι Turing-αποδεκτές γλώσσες αποτελούν
παράδειγμα μη-αποφασίσιμων προβλημάτων.
Γιάννης Ρεφανίδης 204
Μη-αποφασίσιμα προβλήματα
σχετικά με μηχανές Turing • Τα παρακάτω αποτελούν παραδείγματα μη-
αποφασίσιμων προβλημάτων:
– Δεδομένης μιας μηχανής M και μιας λέξης w,
τερματίζει η Μ με είσοδο w;
– Δεδομένης μιας μηχανής Μ, υπάρχει έστω και
μια λέξη για την οποία η Μ τερματίζει;
– Δεδομένης μιας μηχανής Μ, τερματίζει η Μ για
κάθε λέξη;
103
Γιάννης Ρεφανίδης 205
Μη-αποφασίσιμα προβλήματα για
γραμματικές ανεξάρτητες συμφραζομένων
• Για τυχαίες γραμματικές ανεξάρτητες από
συμφραζόμενα G, G1, G2, τα παρακάτω
προβλήματα είναι μη-αποφασίσιμα:
– Ισχύει L(G)=Σ* ;
– Ισχύει L(G1)=L(G2) ;
Γιάννης Ρεφανίδης 206
Μη αποφασίσιμα προβλήματα
για γραμματικές χωρίς περιορισμούς • Για τυχαίες γραμματικές χωρίς περιορισμούς G,
G1, G2, τα παρακάτω προβλήματα είναι μη-
αποφασίσιμα:
– Για τυχαία λέξη w, ισχύει w L(G) ;
– Ισχύει L(G) = ;
104
Μη ντετερμινιστικές
μηχανές Turing
Γιάννης Ρεφανίδης 207
Ορισμός
• Μια μη-ντετερμινιστική μηχανή Turing ορίζεται
όμοια με μια ντετερμινιστική, με την εξής
διαφορά:
– Για κάθε συνολική κατάσταση της μηχανής ,
μπορεί να ορίζονται περισσότερες από μια
επόμενες καταστάσεις.
• Δημιουργείται το ερώτημα, πώς λειτουργεί.
Γιάννης Ρεφανίδης 208
105
Μη-ντετερμινισμός και
ημι-αποφασίσιμες γλώσσες
• Μια μη-ντετερμινιστική μηχανή Turing δέχεται
μια είσοδο w, αν υπάρχει τρόπος ξεκινώντας με
είσοδο το w να καταλήξουμε σε τελική
κατάσταση.
• Η μη-ντετερμινιστική μηχανή Turing ημι-
αποφασίζει μια γλώσσα L, αν δέχεται κάθε λέξη
w της L.
Γιάννης Ρεφανίδης 209
Μη-ντετερμινισμός και
αποφασίσιμες γλώσσες
• Μια μη-ντετερμινιστική μηχανή Turing Μ
αποφασίζει μια γλώσσα L, αν για κάθε λέξη
wΣ* ισχύουν τα εξής:
– Υπάρχει φυσικός αριθμός Ν που εξαρτάται από την Μ
και την w, τέτοιος ώστε να μην υπάρχει κατάσταση C
στην οποία να καταλήγει η μηχανή μετά από Ν μη-
ντετερμινιστικά βήματα.
– Η w ανήκει στην L αν και μόνο αν η Μ με αρχική
είσοδο την w καταλήγει στην «θετική» κατάσταση
τερματισμού της.
Γιάννης Ρεφανίδης 210
106
Μη-ντετερμινισμός και
υπολογίσιμες συναρτήσεις
• Μια μη-ντετερμινιστική μηχανή Turing
υπολογίζει μια συνάρτηση f: Σ*Σ*, αν ισχύουν
τα εξής για κάθε λέξη w:
– Υπάρχει Ν που εξαρτάται από την f και την w,
τέτοιος ώστε να μην υπάρχει συνολική
κατάσταση C προσβάσιμη από την (s, #w#) σε
Ν βήματα.
– (s,#w#)⊦*(h,#u#) αν και μόνο αν f(w)=u .
• Όλοι οι δυνατοί υπολογισμοί πρέπει να συμφωνούν.
Γιάννης Ρεφανίδης 211
Παράδειγμα: Σύνθετοι αριθμοί (1/2)
• Ένας σύνθετος αριθμός είναι το γινόμενο δύο
μεγαλύτερων της μονάδας φυσικών αριθμών.
• Έστω C το σύνολο όλων σύνθετων αριθμών, σε
δυαδική αναπαράσταση:
– C={100, 110, 1000, 1001, 1010, …, 1011011,
…}
• Για να ελέγξει αν ένας αριθμός n είναι σύνθετος,
μια ντετερμινιστική μηχανή θα έπρεπε να ελέγχει
όλους τους μικρότερους αριθμούς...
Γιάννης Ρεφανίδης 212
107
Παράδειγμα: Σύνθετοι αριθμοί (2/2)
• Για να ελέγξει αν ένας αριθμός n είναι σύνθετος,
μια μη-ντετερμινιστική μηχανή:
– Θα επέλεγε μη-ντετερμινιστικά δύο αριθμούς p
και q, μεγαλύτερους της μονάδας και
μικρότερους από τον n.
– Θα τους πολλαπλασίαζε.
– Εάν n=pq, θα τερματίζει «θετικά».
– Εάν npq, θα τερματίζει «αρνητικά».
Γιάννης Ρεφανίδης 213
Σύγκριση ντετερμινιστικών και
μη-ντετερμινιστικών μηχανών Turing
• Αν μια μη-ντετερμινιστική μηχανή Turing Μ αποφασίζει ή
ημι-αποφασίζει μια γλώσσα ή υπολογίζει μια συνάρτηση,
τότε υπάρχει μια ντετερμινιστική μηχανή Turing Μ' που
αποφασίζει ή ημι-αποφασίζει την ίδια γλώσσα ή
υπολογίζει την ίδια συνάρτηση.
– Η Μ' θα προσομοιώσει συστηματικά όλους τους
υπολογισμούς της Μ.
– Η Μ' απαιτεί εκθετικά περισσότερο αριθμό βημάτων
για να προσομοιώσει έναν υπολογισμο της Μ.
Γιάννης Ρεφανίδης 214
108
Αναγωγές
• Έστω L1, L2 Σ*. Μια αναγωγή από την L1 στην
L2 είναι μια συνάρτηση τ : Σ*Σ*, τέτοια ώστε
xL1 αν και μόνο αν τ(x)L2.
– Κατεύθυνση αναγωγής: Από την L1 στην L2.
• Αν η L1 δεν είναι αποφασίσιμη, και υπάρχει
αναγωγή τ από την L1 στην L2, τότε ούτε η L2
είναι αποφασίσιμη.
Γιάννης Ρεφανίδης 215
Κατεύθυνση αναγωγής
• Η συνάρτηση τ(x) από την L1 στην L2:
– Ορίζεται για όλες τις λέξεις της L1
– Δεν έχει ως τιμές της όλες τις λέξεις της L2
• Γενικά η συνάρτηση τ(x) δεν είναι αντιστρέψιμη.
– Αν είναι, τότε ορίζεται και η αντίστροφη
αναγωγή.
• Αν λοιπόν η L1 δεν είναι αποφασίσιμη, τότε για τα
αντίστοιχα προβλήματα δεν είναι ούτε η L2.
Γιάννης Ρεφανίδης 216
109
Παράδειγμα αναγωγής (1/3)
• Έστω η γλώσσα:
• H={«Μ»«w» : Η μηχανή Turing M τερματίζει με
συμβολοσειρά εισόδου το w}
• Η γλώσσα αυτή είναι ημι-αποφασίσιμη
– Πρόκειται για το πρόβλημα του τερματισμού
• Θα βρούμε συναρτήσεις αναγωγής τ από την Η σε
άλλες γλώσσες.
Γιάννης Ρεφανίδης 217
Παράδειγμα αναγωγής (2/3)
• Δεδομένης μιας μηχανής Turing Μ, τερματίζει η
Μ με είσοδο κενή ταινία;
• Περιγράφουμε μια αναγωγή από την Η στην:
– L={«Μ» : Η Μ τερματίζει με είσοδο ε}
• Για κάθε λέξη «Μ»«w» της Η, όπου w=a1a2…an,
κατασκευάζουμε μια λέξη «Mw» της L ως εξής:
– Mw=Ra1Ra2…RanM
Γιάννης Ρεφανίδης 218
110
Παράδειγμα αναγωγής (3/3)
• Δεδομένης μιας μηχανής Turing Μ, υπάρχει έστω και μια
συμβολοσειρά για την οποία η Μ τερματίζει;
• Θα ανάγουμε την L στην L':
– L' = {«Μ» : Η Μ τερματίζει για κάποια είσοδο}
• Έχοντας μια μηχανή Μ (για την οποία δεν μπορούμε να
αποφασίσουμε αν τερματίζει με κενή είσοδο),
κατασκευάζουμε μια μηχανή Μ', η οποία στην αρχή της
λειτουργίας της διαγράφει την είσοδό της και μετά
συνεχίζει σαν την Μ.
Γιάννης Ρεφανίδης 219
Γιάννης Ρεφανίδης 220
Μερικά ακόμη
μη-αποφασίσιμα προβλήματα • Πρόβλημα Thue
• Πρόβλημα αντιστοίχησης του Post
• Πρόβλημα πλακόστρωσης
111
Γιάννης Ρεφανίδης 221
Πρόβλημα Thue (1/2)
• Έστω ένα πεπερασμένο αταξινόμητο σύνολο ζευγών λέξεων:
– {w1,u1}, {w2, u2}, ...., {wn, un}
• Έστω δύο λέξεις w και u, τέτοιες ώστε:
– w=wi1wi2...wik
– u=ui1ui2...uik
όπου i1, i2, ..., ik {1, 2, ... ,n}
• Οι λέξεις w και u λέγονται ισοδύναμες.
Γιάννης Ρεφανίδης 222
Πρόβλημα Thue (2/2)
• Παράδειγμα: – Έστω {ab, a}, {bc, b}, {abc, c}.
– Έστω w=abbcabc
– Τότε η w είναι ισοδύναμη με την u=ababc
– Πράγματι, μπορούμε να τις γράψουμε: • w=ab-bc-abc
• u=a-b-c
• Το πρόβλημα που τίθεται είναι εάν μπορεί να κατασκευασθεί ένα πρόγραμμα που να μας λέει εάν για τυχαίο σύστημα Thue υπάρχουν δύο λέξεις w και u που να είναι ισοδύναμες. Το πρόβλημα αυτό είναι μη-αποφασίσιμο.
112
Γιάννης Ρεφανίδης 223
Πρόβλημα αντιστοίχησης του Post (1/2)
(παραλλαγή του προβλήματος Thue)
• Έστω και πάλι ένα πεπερασμένο αταξινόμητο
σύνολο ζευγών λέξεων:
– {w1,u1}, {w2, u2}, ...., {wn, un}
• Έστω μια λέξη w τέτοια ώστε:
– w=wi1wi2...wik=ui1ui2...uik
όπου i1, i2, ..., ik {1, 2, ... ,n}
• Η λέξη w λέγεται ταίριασμα.
Γιάννης Ρεφανίδης 224
Πρόβλημα αντιστοίχησης του Post (2/2)
• Παράδειγμα:
– Έστω {a, aaa}, {abaaa, ab}, {ab, b}
– Έστω w=abaaaaaab
– Τότε η w είναι ένα ταίριασμα, αφού:
– abaaa-a-a-ab = ab-aaa-aaa-b
• Το πρόβλημα που τίθεται εάν για τυχαίο σύστημα
αντιστοίχησης υπάρχει ένα ταίριασμα. Το
πρόβλημα αυτό είναι μη-αποφασίσιμο.
113
Γιάννης Ρεφανίδης 225
Πρόβλημα πλακόστρωσης (1/2)
• Έστω ένα πεπερασμένο σύνολο από τετράγωνα
πλακάκια.
• Κάθε τύπος από πλακάκι επιτρέπεται να συνορεύει
προς κάθε κατεύθυνση με συγκεκριμένους τύπους
από άλλα πλακάκια.
• Τα πλακάκια δεν επιτρέπεται να περιστραφούν.
• Έχουμε άπειρα πλακάκια από κάθε τύπο.
Γιάννης Ρεφανίδης 226
Πρόβλημα πλακόστρωσης (2/2)
• Θέλουμε να πλακοστρώσουμε το πρώτο
τεταρτημόριο του επιπέδου, τοποθετώντας στην
κάτω αριστερή του γωνία ένα συγκεκριμένο
πλακάκι.
• Το πρόβλημα που τίθεται είναι εάν, για τυχαίο
σύστημα πλακόστρωσης, είναι δυνατή η
πλακόστρωση του πρώτου τεταρτημόριου.
• Το πρόβλημα αυτό είναι μη-αποφασίσιμο.
114
Ιδιότητες των αποφασίσιμων γλωσσών
• Μια γλώσσα είναι αποφασίσιμη, αν και μόνο αν
το συμπλήρωμά της είναι επίσης αποφασίσιμο.
• Μια γλώσσα είναι αποφασίσιμη, αν και μόνο αν
αυτή και το συμπλήρωμά της είναι ημι-
αποφασίσιμες.
Γιάννης Ρεφανίδης 227
Απαριθμήσιμες γλώσσες
• Μια γλώσσα L είναι απαριθμίσιμη κατά Turing,
αν και μόνο αν υπάρχει μηχανή Turing τέτοια
ώστε:
– L={w : (s,#) ⊦* (q,#w#) }
• όπου q μια προκαθορισμένη «κατάσταση
παρουσίασης» της M.
• Μια γλώσσα είναι ημι-αποφασίσιμη αν και μόνο
αν είναι απαριθμήσιμη κατά Turing.
Γιάννης Ρεφανίδης 228
115
Λεξικογραφικά απαριθμήσιμες γλώσσες
• Μια μηχανή Turing Μ λέμε ότι απαριθμεί
λεξικογραφικά τη γλώσσα L, αν:
– Η Μ απαριθμεί την L.
– Όποτε συμβαίνει να ισχύει:
• (q,#w#) ⊦* (q,#w'#)
– τότε η w προηγείται λεξικογραφικά της w'.
• Μια γλώσσα είναι αποφασίσιμη, αν και μόνο αν
είναι λεξικογραφικά απαριθμήσιμη.
Γιάννης Ρεφανίδης 229
Θεώρημα του Rice
• Έστω ότι C είναι ένα γνήσιο μη-κενό υποσύνολο
της κλάσης όλων των ημι-αποφασίσιμων
γλωσσών. Τότε το ακόλουθο πρόβλημα είναι μη-
αποφασίσιμο:
– Δεδομένης μιας μηχανής Turing M, ισχύει ότι
L(M)C;
• Δεν μπορούμε να αποδείξουμε στη γενική
περίπτωση ότι η γλώσσα μιας μηχανής Turing
είναι κανονική, χωρίς συμφραζόμενα, κλπ.
Γιάννης Ρεφανίδης 230
116
Υπολογιστική πολυπλοκότητα
Γιάννης Ρεφανίδης 231
Πρακτικά εφικτοί αλγόριθμοι
• Μια μηχανή Turing Μ ονομάζεται πολυωνυμικά
φραγμένη, αν υπάρχει πολυώνυμο p(n) τέτοιο
ώστε να ισχύει το εξής:
– Για κάθε είσοδο x, δεν υπάρχει κατάσταση C,
τέτοια ώστε (s,#x#) ⊦p(|x|)+1 C
• Μια γλώσσα λέγεται πολυωνυμικά
αποφασίσιμη, αν υπάρχει μια πολυωνυμικά
φραγμένη μηχανή Turing που την αποφασίζει.
• Η κλάση όλων των πολυωνυμικά αποφασίσιμων γλωσσών συμβολίζεται με P.
Γιάννης Ρεφανίδης 232
117
Θέση του Church (revisited)
• Οι πολυωνυμικά φραγμένες μηχανές Turing και η κλάση P εκφράζουν ικανοποιητικά τις
διαισθητικές έννοιες, αντίστοιχα, των πρακτικά
εφικτών αλγορίθμων και των ρεαλιστικά
επιλύσιμων προβλημάτων.
• Η κλάση P είναι κλειστή ως προς το συμπλήρωμα.
Γιάννης Ρεφανίδης 233
Προβλήματα
Γιάννης Ρεφανίδης 234
118
Το πρόβλημα της συνεκτικότητας
• Δεδομένων ενός κατευθυνόμενου γραφήματος
GVxV, όπου V={v1,v2, …, vn} και δύο κόμβων
vi,vjV, υπάρχει μονοπάτι από τον vi στον vj ;
• Είναι πρόβλημα, δεν είναι γλώσσα.
• Μπορεί να μετατραπεί σε γλώσσα ως εξής:
– L={(«G»,«vi»,«vj») : Υπάρχει μονοπάτι από
τον vi στον vj στο γράφημα G.
• Οι γλώσσες κωδικοποιούν προβλήματα!
• Ανήκει στο P .
Γιάννης Ρεφανίδης 235
Γράφημα Euler
• Δεδομένου ενός κατευθυνόμενου γραφήματος G, υπάρχει
κλειστό μονοπάτι στο G το οποίο χρησιμοποιεί κάθε ακμή
ακριβώς μία φορά;
– Γράφημα Euler ή γράφημα μοναδικής διάσχισης.
– L = { «G» : Το G είναι γράφημα Euler }
• Λύση:
– Υπάρχει μονοπάτι μεταξύ κάθε δύο κόμβων.
– Για κάθε κόμβο, το πλήθος των εισερχόμενων και
εξερχόμων ακμών ταυτίζονται.
• Ανήκει στο P (μπορεί να αποδειχθεί και με αναγωγή στο
πρόβλημα της συνεκτικότητας).
Γιάννης Ρεφανίδης 236
119
Γιάννης Ρεφανίδης 237
Πηγή:
http://en.wikipedia.org/wiki/File:Konigs
burg_graph.svg
Οι γέφυρες του Königsberg
Πηγή:
http://en.wikipedia.org/wiki/File:Labelle
d_Eulergraph.svg
Γράφημα Hamilton
• Δεδομένου ενός γραφήματος G, υπάρχει κύκλος
που διέρχεται από κάθε κόμβο του G ακριβώς μια
φορά;
– Κύκλος Hamilton, γράφημα Hamilton.
• Δεν έχει βρεθεί κανείς πολυωνυμικός αλγόριθμος
για αυτό το πρόβλημα.
• Μη-πολυωνυμική λύση:
– Εξέτασε όλες τις μεταθέσεις κόμβων του
γραφήματος.
Γιάννης Ρεφανίδης 238
120
Γιάννης Ρεφανίδης 239
Πηγή:
http://upload.wikimedia.org/wikipedia/c
ommons/c/cf/Herschel_graph.svg
Πηγή:
http://upload.wikimedia.org/wikipedia/c
ommons/6/60/Hamiltonian_path.svg
Πλανώδιος πωλητής
• Δοθέντος ενός πλήρους, μη κατευθυνόμενου
γραφήματος G=VxV με κόμβους V={v1,v2,…,vn},
καθώς και ενός συμμετρικού μη-αρνητικού
πίνακα D διαστάσεων nxn, με τα στοιχεία του dij
να εκφράζουν το βάρος της ακμής (vi,vj),
ψάχνουμε μια μετάθεση π των κορυφών V, έτσι
ώστε να ελαχιστοποιείται το παρακάτω άθροισμα:
– c(π)=dπ(1)π(2)+dπ(2)π(3)+...+dπ(n-1)π(n)+dπ(n)π(1)
• Πρόβλημα βελτιστοποίησης
Γιάννης Ρεφανίδης 240
121
Μετατροπή προβλημάτων
βελτιστοποίησης σε γλώσσες
• Ορίζουμε έναν περιορισμό στο κόστος της κάθε
λύσης.
• Οι λύσεις που ικανοποιούν τον περιορισμό είναι
αποδεκτές (θεωρούνται λέξεις της γλώσσας).
• Θέτουμε ένα ανώτατο όριο Β στο κόστος της
λύσης και ψάχνουμε να βρούμε αν υπάρχει λύση
με κόστος το πολύ Β.
• Αν το πρόβλημα βελτιστοποίησης ανήκει στο P,
τότε και το πρόβλημα απόφασης ανήκει στο P.
Γιάννης Ρεφανίδης 241
Ανεξάρτητο Σύνολο
• Δεδομένων ενός μη κατευθυνόμενου γραφήματος
G και ενός ακεραίου Κ ≥ 2, υπάρχει υποσύνολο
του C του V με |C| ≥ K, τέτοιο ώστε για κάθε
vi,vjC, να μην υπάρχει ακμή μεταξύ των vi και
vj;
• Δεν έχει βρεθεί πολυωνυμικός αλγόριθμος.
Γιάννης Ρεφανίδης 242
122
Γιάννης Ρεφανίδης 243
Πηγή:http://upload.wikimedia.org/wikipedia/commons/3/34/Independent_set_graph.svg
Κλίκα
• Δεδομένων ενός μη κατευθυνόμενου γραφήματος
G και ενός ακεραίου Κ ≥ 2, υπάρχει υποσύνολο
του C του V με |C| ≥ K, τέτοιο ώστε για κάθε
vi,vjC, να υπάρχει ακμή μεταξύ των vi και vj;
• Δεν έχει βρεθεί πολυωνυμικός αλγόριθμος.
Γιάννης Ρεφανίδης 244
123
Γιάννης Ρεφανίδης 245
Πηγή: http://en.wikipedia.org/wiki/File:Brute_force_Clique_algorithm.svg
Κάλυμμα κόμβων
• Ένα σύνολο κόμβων καλύπτει μια ακμή, αν
περιλαμβάνει μια τουλάχιστον το ένα άκρο της.
• Δεδομένων ενός μη κατευθυνόμενου γραφήματος
G και ενός ακεραίου Β ≥ 2, υπάρχει υποσύνολο
του C του V με |C| K, τέτοιο ώστε το C να
καλύπτει όλες τις ακμές του G ;
– Σκεφτείτε το πρόβλημα της φρούρησης των
διαδρόμων ενός μουσείου.
Γιάννης Ρεφανίδης 246
124
Διαμέριση ακεραίων
• Μας δίνεται ένα σύνολο n μη-αρνητικών
ακεραίων, a1, a2, …, an. Μπορούμε να τους
χωρίσουμε σε δύο ξένα υποσύνολα, έτσι ώστε οι
ακέραιοι κάθε υποσυνόλου να έχουν το ίδιο
άθροισμα;
– Π.χ.: Έστω Α={38,17,52,61,21,88,25}.
– 38+52+61 = 17+21+88+25 = 151
Γιάννης Ρεφανίδης 247
Διαμέριση ακεραίων: Αλγόριθμος
• Έστω Η το ημιάθροισμα όλων των ακεραίων.
Ψάχνουμε να βρούμε ένα υποσύνολο των
ακεραίων που να αθροίζεται στο Η.
• Για 1in, ορίζουμε το εξής σύνολο αριθμών:
– B(i)={bH : b είναι το άθροισμα ενός
υποσυνόλου των αριθμών {a1,…,ai}}
• Υπολογίζουμε τα διάφορα b(i), από i=1 μέχρι n,
μέχρι να εμφανιστεί ο αριθμός Η μέσα σε κάποιο
b(i).
Γιάννης Ρεφανίδης 248
125
Παράδειγμα
• A = {38, 17, 52, 61, 21, 88, 25}
• H = 151
• B(0) = {0}
• B(1) = {0,38}
• B(2) = {0,17,38,55}
• B(3) = {0, 17, 38, 52, 55, 69, 90, 107}
• …
• B(7) = {0, 17, 21, …, 151}
Γιάννης Ρεφανίδης 249
Πολυπλοκότητα αλγορίθμου διαμέρισης
• Είναι εύκολο να αποδείξουμε ότι η
πολυπλοκότητα του αλγορίθμου είναι Ο(nH).
• Ανήκει ο αλγόριθμος στο P ;
• Όχι, γιατί το μήκος της εισόδου είναι τάξης
μεγέθους x=nlg(H), με αποτέλεσμα η
πολυπλοκότητα να είναι εκθετική σε σχέση με το
μήκος της εισόδου: Ο(nex/n) .
• Αν ωστόσο υιοθετούσαμε μοναδιαία
αναπαράσταση, η πολυπλοκότητα θα ήταν
γραμμική ως προς το μέγεθος της εισόδου.
Γιάννης Ρεφανίδης 250
126
Tύποι Bool
• Έστω X={x1,x2,…,xn} ένα πεπερασμένο σύνολο
από μεταβλητές Bool, και έστω X'={x'1, x'2,…,
x'n} οι αρνήσεις τους.
• Ονομάζουμε τα μέλη του ΧΧ' στοιχεία.
– Θετικά στοιχεία και αρνητικά στοιχεία.
• Μια συνθήκη C είναι ένα μη κενό σύνολο
στοιχείων CXX'.
• Ένας τύπος Bool σε κανονική συζευκτική μορφή
είναι ένα σύνολο συνθηκών.
Γιάννης Ρεφανίδης 251
Παράδειγμα
• Έστω X={x1,x2,x3} και άρα X'={x'1,x'2,x'3}.
• Μια συνθήκη είναι η:
– C={x1x'2}
• Ένας τύπος Bool είναι ο:
– F={(x1x'2x3), (x'1), (x2x'2)}
• Απόδοση τιμών αληθείας είναι μια απεικόνιση
από το Χ στο σύνολο {T,F} (T=true, F=false).
• Ικανοποιήσιμος τύπος.
– x1=F, x2=T, x3=T Γιάννης Ρεφανίδης 252
127
Το πρόβλημα της ικανοποιησιμότητας
• Μη ικανοποιήσιμος τύπος:
– F =
{(x1x2x3),(x'1x2),(x'2x3),(x'3x1),(x'1x'2x'3)}
• Το πρόβλημα της ικανοποιησιμότητας:
– Δεδομένου ενός τύπου Bool, είναι αυτός
ικανοποιήσιμος;
Γιάννης Ρεφανίδης 253
2-SAT
• Ειδική περίπτωση του προβλήματος της
ικανοποιησιμότητας:
– Οι συνθήκες έχουν το πολύ δύο στοιχεία
• F={(x1x2),(x3x'2),(x1),(x'1x'2),(x3x4),(x'3x5),
(x'4x'5),(x4x'3)}
• Το πρόβλημα 2-SAT ανήκει στο P.
Γιάννης Ρεφανίδης 254
128
Η κλάση NP
Γιάννης Ρεφανίδης 255
Προβλήματα που δεν ανήκουν στην P
• Αποφασίσιμη εκδοχή του προβλήματος του
τερματισμού:
– Ε={«Μ»«w» : Η Μ δέχεται την είσοδο w μετά
από το πολύ 2|w| βήματα}
• Η Ε δεν ανήκει στην P.
• Άλλα προβλήματα που δεν ανήκουν στο P :
– Κύκλος Hamilton, περιοδεύων πωλητής,
ανεξάρτητο σύνολο, διαμέριση,
ικανοποιησιμότητα, ...
Γιάννης Ρεφανίδης 256
129
Η κλάση NP
• Μια μη-ντετερμινιστική μηχανή Turing Μ λέγεται
πολυωνυμικά φραγμένη αν υπάρχει πολυώνυμο
p(n) τέτοιο ώστε για κάθε είσοδο x να μην
υπάρχει συνολική κατάσταση C της Μ, τέτοια
ώστε:
– (s,#x#) ⊦p(|x|)+1 C
• Ορίζουμε ως NP (non-deterministic polynomial)
την κλάση όλων των γλωσσών που αποφασίζονται
από μια πολυωνυμικά φραγμένη μη-
ντετερμινιστική μηχανή Turing. Γιάννης Ρεφανίδης 257
Ικανοποιησιμότητα
• Έστω μια μηχανή Μ που εκτελεί τους εξής
υπολογισμούς:
– Γράφει στην ταινία μη-ντετερμινιστικά μια
ανάθεση τιμών στις μεταβλητές Bool.
– Ελέγχει την ανάθεση.
• Κάθε ακολουθία υπολογισμών είναι φραγμένη.
• Το πρόβλημα της ικανοποιησιμότητας ανήκει στην NP .
Γιάννης Ρεφανίδης 258
130
Περιοδεύων πωλητής
• Με δεδομένο «προϋπολογισμό» Β.
• Έστω μια μηχανή Μ που εκτελεί τους εξής
υπολογισμούς:
– Γράφει στην ταινία μη-ντετερμινιστικά μια
μετάθεση των πόλεων.
– Ελέγχει την μετάθεση.
• Κάθε ακολουθία υπολογισμών είναι φραγμένη.
• Το πρόβλημα του περιοδεύοντος πωλητή ανήκει στην NP .
Γιάννης Ρεφανίδης 259
Ιδιότητες της NP
• P NP
• Τα δένδρα που αναπαριστούν το σύνολο των
υπολογισμών μιας πολυωνυμικά φραγμένης μη-
ντετερμινιστικής μηχανής Turing μπορεί να έχουν
εκθετικά πολλά κλαδιά, αλλά όλα με μέτριο
βάθος.
• Η προσομοίωση μιας πολυωνυμικά φραγμένης
μη-ντετερμινιστικής μηχανής Turing από μια
ντετερμινιστική μηχανή Turing απαιτεί εκθετικά
μεγάλο αριθμό βημάτων. Γιάννης Ρεφανίδης 260
131
Η κλάση EXP
• Μια ντετερμινιστική μηχανή Turing M
ονομάζεται εκθετικά φραγμένη αν υπάρχει
πολυώνυμο p(n) τέτοιο ώστε για κάθε είσοδο x να
μην υπάρχει κατάσταση C τέτοια ώστε:
– (s,#x#) ⊦2p(|x|)
+1C
• Ορίζουμε ως EXP την κλάση όλων των γλωσσών
που αποφασίζονται από μια εκθετικά φραγμένη
ντερμινιστική μηχανή Turing.
Γιάννης Ρεφανίδης 261
Ιεραρχία κλάσεων
• Αν μια γλώσσα ανήκει στην NP, τότε ανήκει και
στην EXP.
• Γενικότερα ισχύει:
– P NP EXP
• Γνωρίζουμε ωστόσο πως:
– P EXP
• Δεν έχει αποδειχθεί κάποιο από τα :
• P NP
• NP EXP
Γιάννης Ρεφανίδης 262
132
Πιστοποιητικά
• Οι μη-ντετερμινιστικές πολυωνυμικά φραγμένες μηχανές Turing της κλάσης NP λειτουργούν ως εξής:
– Δημιουργούν υποψήφιες λύσεις.
– Τις ελέγχουν.
• Ονομάζουμε «πιστοποιητικό» (certificate) μια τέτοια
συμβολοσειρά που είναι λύση.
• Ένα πιστοποιητικό πρέπει να είναι πολυωνυμικά σύντομο
και να μπορεί να ελεγχθεί σε πολυωνυμικό χρόνο.
• Όλα τα προβλήματα του NP έχουν πιστοποιητικά και
μόνο αυτά.
Γιάννης Ρεφανίδης 263
Πολυωνυμικά ισορροπημένες γλώσσες (1/2)
• Έστω Σ ένα αλφάβητο και ; ένα σύμβολο που δεν
ανήκει στο Σ.
• Έστω L' Σ*;Σ* μια γλώσσα.
• Η L' είναι πολυωνυμικά ισορροπημένη αν υπάρχει
πολυώνυμο p(n) τέτοιο ώστε:
– x;yL' |y|p(|x|)
Γιάννης Ρεφανίδης 264
133
Πολυωνυμικά ισορροπημένες γλώσσες (2/2)
• Έστω LΣ* μια γλώσσα, όπου ;Σ και |Σ|≥2,
τότε:
– Η LNP αν και μόνο αν υπάρχει γλώσσα L'
Σ*;Σ* που είναι πολυωνυμικά ισορροπημένη και ανήκει στο L'P , και ισχύει:
– L = {x : υπάρχει yΣ*, τέτοιο ώστε x;yL'}
Γιάννης Ρεφανίδης 265
Αναγωγές
Γιάννης Ρεφανίδης 266
134
Κλίκα – Ανεξάρτητο Σύνολο (1/2)
• Μέγιστη κλίκα: Το μέγιστο πλήθος κορυφών που
συνδέονται όλες με όλες.
• Ανεξάρτητο σύνολο: Το μέγιστο σύνολο κορυφών
που δεν υπάρχει καμία σύνδεση μεταξύ τους.
• Έστω G=(V,E) ο γράφος στον οποίο θέλουμε να
βρούμε τη μέγιστη κλίκα.
• Έστω G'=(V,E') ένας νέος γράφος με το ίδιο
πλήθπς κορυφών και με ακμές:
– E' = {(v1,v2) : v1V, v2V, (v1,v2)E}
Γιάννης Ρεφανίδης 267
Κλίκα – Ανεξάρτητο Σύνολο (2/2)
Γιάννης Ρεφανίδης 268
135
Ανεξάρτητο σύνολο – Κάλυμμα κόμβων
• Σε έναν γράφο, κάθε κόμβος που δεν είναι στο
μέγιστο ανεξάρτητο σύνολο, ανήκει στο ελάχιστο
κάλυμμα κόμβων.
Γιάννης Ρεφανίδης 269
Πολυωνυμική αναγωγή
• Μια συνάρτηση f:Σ*Σ* ονομάζεται
υπολογίσιμη σε πολυωνυμικό χρόνο αν υπάρχει
μια πολυωνυμικά φραγμένη Turing M που την
υπολογίζει.
• Έστω οι γλώσσες L1,L2Σ*. Μια συνάρτηση
υπολογίσιμη σε πραγματικό χρόνο τ:Σ*Σ*
ονομάζεται πολυωνυμική αναγωγή από την L1
στην L2 αν για κάθε xΣ* ισχύει xL1τ(x)L2.
Γιάννης Ρεφανίδης 270
136
Πολυωνυμικές αναγωγές προβλημάτων
• Διπλές πολυωνυμικές αναγωγές
– Αν ένα πρόβλημα ανήκει στο P, τότε όλα
ανήκουν στο P.
Γιάννης Ρεφανίδης 271
Κάλυμμα
κόμβων Κλίκα
Ανεξάρτητο
Σύνολο
Κύκλος Hamilton Ικανοποιησιμότητα (1/7)
• Πρέπει να βρούμε έναν τύπο Bool που να
περιγράφει το πρόβλημα Hamilton, έτσι ώστε ο
γράφος να είναι Hamilton αν και μόνο αν ο τύπος
Bool είναι ικανοποιήσιμος.
• Ορίζουμε μεταβλητές xij, 1i,j4,
με τη σημασία ότι ο i κόμβος εμφανίζεται
στη θέση j του κύκλου Hamilton.
Γιάννης Ρεφανίδης 272
v1
v2 v3
v4
137
Κύκλος Hamilton Ικανοποιησιμότητα (2/7)
• Κάθε κόμβος πρέπει να εμφανίζεται τουλάχιστον
μια φορά στον κύκλο:
– (x11 x12 x13 x14)
– (x21 x22 x23 x24)
– (x31 x32 x33 x34)
– (x41 x42 x43 x44)
Γιάννης Ρεφανίδης 273
v1
v2 v3
v4
Κύκλος Hamilton Ικανοποιησιμότητα (3/7)
• Κάθε κόμβος εμφανίζεται το πολύ μια φορά στον
κύκλο:
– (x'11 x'12) (x'11 x'13) (x'11 x'14) (x'12
x'13) (x'12 x'14) (x'13 x'14)
– (x'21 x'22) (x'21 x'23) (x'21 x'24) (x'22
x'23) (x'22 x'24) (x'23 x'24)
– (x'31 x'32) (x'31 x'33) (x'31 x'34) (x'32
x'33) (x'32 x'34) (x'33 x'34)
– (x'41 x'42) (x'41 x'43) (x'41 x'44) (x'42
x'43) (x'42 x'44) (x'43 x'44)
Γιάννης Ρεφανίδης 274
138
Κύκλος Hamilton Ικανοποιησιμότητα (4/7)
• Σε κάθε θέση σειρά του κύκλου Hamilton
εμφανίζεται τουλάχιστον ένας κόμβος:
– (x11 x21 x31 x41)
– (x12 x22 x32 x42)
– (x13 x23 x33 x43)
– (x14 x24 x34 x44)
Γιάννης Ρεφανίδης 275
v1
v2 v3
v4
Κύκλος Hamilton Ικανοποιησιμότητα (5/7)
• Σε κάθε θέση του κύκλου Hamilton εμφανίζεται
τουλάχιστον το πολύ ένας κόμβος:
– (x'11 x'21) (x'11 x'31) (x'11 x'41) (x'21
x'31) (x'21 x'41) (x'31 x'41)
– (x'12 x'22) (x'12 x'32) (x'12 x'42) (x'22
x'32) (x'22 x'42) (x'32 x'42)
– (x'13 x'23) (x'13 x'33) (x'13 x'43) (x'23
x'33) (x'23 x'43) (x'33 x'43)
– (x'14 x'24) (x'14 x'34) (x'14 x'44) (x'24
x'34) (x'24 x'44) (x'34 x'44)
Γιάννης Ρεφανίδης 276
139
Κύκλος Hamilton Ικανοποιησιμότητα (6/7)
• Για κάθε δύο ακμές που δεν συνδέονται
με ακμή, πρέπει να εξασφαλίσουμε ότι δεν είναι
συνεχόμενες στον κύκλο Hamilton.
– (x'11 x'32) (x'31 x'12)
– (x'12 x'33) (x'32 x'13)
– (x'13 x'34) (x'33 x'14)
– (x'14 x'31) (x'34 x'11)
Γιάννης Ρεφανίδης 277
v1
v2 v3
v4
Κύκλος Hamilton Ικανοποιησιμότητα (7/7)
• Η αναγωγή από τον κύκλο Hamilton στην
ικανοποιησιμότητα είναι πολυωνυμική.
– Συνολικό πλήθος συνθηκών: O(n3)
• Το πρόβλημα Hamilton έχει λύση, αν και μόνο αν
το αντίστοιχο πρόβλημα ικαποιησιμότητας έχει
λύση.
• Μπορεί να αποδειχθεί και η αντίστροφη αναγωγή.
Γιάννης Ρεφανίδης 278
140
Χρονοπρογραμματισμός 2 μηχανών
• Πρέπει να εκτελεστούν n εργασίες σε 2 μηχανές:
– Δεν υπάρχουν περιορισμοί διάταξης.
– Οι μηχανές είναι ίδιες.
– Οι εργασίες έχουν ακέραιους μη αρνητικούς
χρόνους εκτέλεσης a1, a2, …, an.
– Οι εργασίες δεν διακόπτονται.
• Μπορούν να εκτελεστούν οι εργασίες σε
προθεσμία D;
Γιάννης Ρεφανίδης 279
Πρόβλημα σακιδίου
• Μας δίνεται ένα σύνολο n αντικειμένων βάρους
a1, a2, …, an (μη αρνητικοί ακέραιοι) και ένας
ακέραιος Κ.
• Υπάρχει υποσύνολο P των αντικειμένων τέτοιο
ώστε το άθροισμα των βαρών τους να ισούται με
Κ;
Γιάννης Ρεφανίδης 280
141
Και άλλες αναγωγές
• Υπάρχουν 6 πολυωνυμικές αναγωγές μεταξύ των
παρακάτω προβλημάτων.
Γιάννης Ρεφανίδης 281
Προγραμματισμός
2 μηχανών
Πρόβλημα
σακιδίου
Διαμέριση
Σακίδιο → Διαμέριση
• Έστω ότι το Κ στο πρόβλημα της διαμέρισης
ισούται με το ημιάθροισμα των ακεραίων.
– Το πρόβλημα του σακιδίου ταυτίζεται πλέον με
το πρόβλημα της διαμέρισης.
• Έστω ότι το Κ δεν ισούται με το ημιάθροισμα των
ακεραίων.
– Προσθέτουμε δύο επιπλέον ακεραίους:
– an+1=2H+2K
– an+2=4H
Γιάννης Ρεφανίδης 282
142
Διάμεριση → Σακίδιο
• Η διαμέριση είναι ειδική περίπτωση του Σακιδίου.
• Αρκεί να θέσουμε:
Γιάννης Ρεφανίδης 283
1
1
2
n
i
i
K a
Διαμέριση → Χρονοπρογραμματισμός 2Μ
• Έστω η διαμέριση σε δύο ισοβαρή σύνολα των a1,
a2, …, an.
• Ορίζουμε το πρόβλημα χρονοπρογραμματισμού
με:
Γιάννης Ρεφανίδης 284
1
1
2
n
i
i
D a
143
Χρονοπρογραμματισμός 2Μ → Διαμέριση
• Έστω n εργασίες με διάρκειες a1, a2, …, an και
προθεσμία D.
• Έστω ο αριθμός:
• Ο I εκφράζει το συνολικό «νεκρό» χρόνο (idle
time) του συνολικού χρονοπρογραμματισμού.
• Προσθέτουμε νέες εργασίες για να καλύψουμε τη
διάρκεια I:
– Χρησιμοποιούμε δυνάμεις του 2.
– Π.χ., για Ι=56 1, 2, 4, 8, 16, 25
Γιάννης Ρεφανίδης 285
1
2n
i
i
I D a
Σακίδιο ↔ Χρονοπρογραμματισμός 2Μ
• Δεν χρειάζεται να το αποδείξουμε, μιας και
έχουμε αποδείξει τα:
– Σακίδιο → Διαμέριση →
Χρονοπρογραμματισμός 2Μ
– Χρονοπρογραμματισμός 2Μ → Διαμέριση →
Σακίδιο
• Αν τ1 είναι μια πολυωνυμική αναγωγή από την L1
στην L2 και τ2 μια πολυωνυμική αναγωγή από την
L2 στην L3, τότε η τ1○τ2 είναι μια πολυωνυμική
αναγωγή από την L1 στην L3 . Γιάννης Ρεφανίδης 286
144
NP-πληρότητα
Γιάννης Ρεφανίδης 287
NP-πλήρης γλώσσα
• Μια γλώσσα LΣ* ονομάζεται NP-πλήρης αν:
– LNP
– Για κάθε γλώσσα L'NP, υπάρχει μια
πολυωνυμική αναγωγή από την L' στην L.
• Αν αποδειχθεί έστω και για μια NP -πλήρη
γλώσσα ότι ανήκει στο P, τότε θα έχει αποδειχθεί
πως P =NP.
Γιάννης Ρεφανίδης 288
145
Το θεώρημα του Cook
• Για να αποδείξουμε ότι υπάρχουν NP-πλήρεις
γλώσσες, πρέπει να αποδείξουμε για τουλάχιστον μία NP γλώσσα ότι όλες οι άλλες NP-γλώσσες
μπορούν να αναχθούν σε αυτήν.
– Αυτό δεν είναι ιδιαίτερα εύκολο!
• Ο πρώτος που απέδειξε κάτι τέτοιο ήταν ο
Stephen Cook το 1971, για το πρόβλημα της
ικανοποιησιμότητας.
Γιάννης Ρεφανίδης 289
Ικανοποιησιμότητα → Κλίκα (1/2)
• Κάθε τύπος Bool μπορεί να γραφεί σε κανονική
συζευκτική μορφή:
– (………) (………)…
• Έστω ένας τύπος Bool στην παραπάνω μορφή,
π.χ.:
– (x1x'2x3) (x'1x2)(x'2x3)
• Κατασκευάζουμε έναν γράφο με μια κορυφή για
κάθε λεκτικό διάζευξης (πολλά λεκτικά
επαναλαμβάνονται).
Γιάννης Ρεφανίδης 290
146
• (x1x'2x3) (x'1x2)(x'2x3)
Ικανοποιησιμότητα → Κλίκα (2/2)
Γιάννης Ρεφανίδης 291
x3
x'2
x1
x2
x'1
x'2 x3
Μπορούμε να βρούμε
μια κλίκα μεγέθους 3;
Αποδεικνύοντας την NP-πληρότητα
• Δύο βήματα:
– Πρώτα αποδεικνύουμε ότι το νέο πρόβλημα είναι NP.
– Στη συνέχεια βρίσκουμε μια πολυωνυμική αναγωγή από ένα ήδη γνωστό NP -πλήρες
πρόβλημα στο νέο πρόβλημα.
• Γιατί είναι απαραίτητο το πρώτο βήμα;
Γιάννης Ρεφανίδης 292
147
P vs NP
• Πολλοί έχουν προσπαθήσει να αποδείξουν αν P =NP ή αν P NP.
– Υπάρχουν 41 «αποδείξεις» ότι P =NP.
– Υπάρχουν 46 «αποδείξεις» ότι P NP. » Μια εξ’ αυτών, μεγέθους 102 σελίδων, είχε σφάλμα στη
σελίδα 67.
• http://en.wikipedia.org/wiki/P_versus_NP_problem
• http://en.wikipedia.org/wiki/Millennium_Prize_Problems
Γιάννης Ρεφανίδης 293
Ελάχιστα μονοπάτια
Γιάννης Ρεφανίδης 294
148
Ορισμός προβλήματος
• Έχουμε ένα γράφο με βάρη στις ακμές του.
• Θέλουμε να βρούμε τον ελάχιστο κύκλο που
επισκέπτεται όλες τους κόμβους.
• Εναλλακτικά (πρόβλημα απόφασης):
– Υπάρχει κύκλος που επισκέπτεται όλους τους
κόμβους με κόστος κάτω από d;
• Είναι το πρόβλημα αυτό NP -πλήρες;
Γιάννης Ρεφανίδης 295
NP-πληρότητα για το πρόβλημα
του ελάχιστου κύκλου
• Βήμα 1ο: Είναι το πρόβλημα στο NP ;
– Ναι! Αν μας δώσουν μια λύση, μπορούμε να
την ελέγξουμε σε πολυωνυμικό χρόνο.
• Βήμα 2ο: Μπορούμε να ανάγουμε σε πολυωνυμικό χρόνο κάποιο γνωστό NP –πλήρες
πρόβλημα στο πρόβλημα εύρεσης του ελάχιστου
μονοπατιού;
– Θα προσπαθήσουμε να το κάνουμε για το SAT.
Γιάννης Ρεφανίδης 296
149
Ικανοποιησιμότητα
Ελάχιστο μονοπάτι (1/9)
• Ποιο είναι το μήκος του ελάχιστου μονοπατιού
από το Α στο Β που επισκέπτεται όλους τους
κόμβους;
– 7
• Πόσα διαφορετικά ελάχιστα μονοπάτια υπάρχουν
από το Α στο Β, που επισκέπτονται όλους τους
κόμβους;
– 2
Γιάννης Ρεφανίδης 297
A Β
Ικανοποιησιμότητα
Ελάχιστο μονοπάτι (2/9)
• Τα ίδια ερωτήματα για τον παρακάτω γράφο:
– Μήκος:10, Ελάχιστες διαδρομές: 2
• Και για τον παρακάτω γράφο:
– Μήκος:19, Ελάχιστες διαδρομές: 2
Γιάννης Ρεφανίδης 298
A Β
A Β
150
Ικανοποιησιμότητα
Ελάχιστο μονοπάτι (3/9)
• Έστω ότι έχουμε n τέτοιες δομές:
• Ποιο είναι το μήκος του ελάχιστου μονοπατιού
που επισκέπτεται όλες τις κορυφές;
– n·19+n+1
• Πόσα τέτοια ελάχιστα μονοπάτια υπάρχουν;
– 2n
Γιάννης Ρεφανίδης 299
A Β ...
Ικανοποιησιμότητα
Ελάχιστο μονοπάτι (4/9)
• Μπορούμε να αντιστοιχήσουμε τις δύο ελάχιστες
διαδρομές μέσα από κάθε δομή με τις δύο τιμές
μιας Boolean μεταβλητής.
Γιάννης Ρεφανίδης 300
True
False
151
Ικανοποιησιμότητα
Ελάχιστο μονοπάτι (5/9)
• Μπορούμε να αντιστοιχήσουμε κάθε δομή με μια
μεταβλητή Boolean:
• Το πλήθος των εναλλακτικών ελάχιστων
διαδρομών που επισκέπτονται κάθε κόμβο, 2n,
ισούται με το πλήθος των μεταβλητών Bool.
Γιάννης Ρεφανίδης 301
A Β ...
x1 x2 xn
Ικανοποιησιμότητα
Ελάχιστο μονοπάτι (6/9)
• Έστω ότι βάζουμε ακόμη έναν κόμβο στο γράφο
μας:
• Πόσες εναλλακτικές διαδρομές υπάρχουν τώρα;
– 2n-1
Γιάννης Ρεφανίδης 302
A Β ...
x1 x2 xn
152
Ικανοποιησιμότητα
Ελάχιστο μονοπάτι (7/9)
• Συσχέτιση μιας διάζευξης με ελάχιστα μονοπάτια:
– (x1x'2x3)
• Ποιο είναι το μήκος του ελάχιστου μονοπατιού;
– 2·19+20+4
• Πόσα ελάχιστα μονοπάτια υπάρχουν;
– 12=3·22
Γιάννης Ρεφανίδης 303
A Β
x1 x2 x3
Ικανοποιησιμότητα
Ελάχιστο μονοπάτι (8/9)
• Συσχέτιση ενός τύπου Bool σε κανονική
συζευκτική μορφή, με τα ελάχιστα μονοπάτια:
• Πόσοι κόμβοι υπάρχουν;
– n(3(m+1)+2)+m+2 = 3mn+5n+m+2
Γιάννης Ρεφανίδης 304
A Β
...
x1
c1
xn
c2 cm
153
Ικανοποιησιμότητα
Ελάχιστο μονοπάτι (9/9)
• Ποιο (πρέπει να) είναι το μήκος του ελάχιστου
μονοπατιού από το Α στο Β, ώστε ο τύπος Bool
να είναι ικανοποιήσιμος;
• 3mn+5n+m+1
• Αν λοιπόν υπάρχει ελάχιστο μονοπάτι με
3mn+5n+m+1 ακμές, τότε ο τύπος Bool είναι
ικανοποιήσιμος.
Γιάννης Ρεφανίδης 305
A Β
...
x1
c1
xn
c2 cm
Και άλλα NP -πλήρη
προβλήματα • 1 Graph theory
– 1.1 Covering and partitioning
– 1.2 Subgraphs and supergraphs
– 1.3 Vertex ordering
– 1.4 Iso- and other morphisms
– 1.5 Miscellaneous
• 2 Network design
– 2.1 Spanning trees
– 2.2 Cuts and connectivity
– 2.3 Routing problems
– 2.4 Flow problems
– 2.5 Miscellaneous
– 2.6 Graph Drawing
• 3 Sets and partitions
– 3.1 Covering, hitting, and splitting
– 3.2 Weighted set problems
– 3.3 Set partitions
• 4 Storage and retrieval
– 4.1 Data storage
– 4.2 Compression and representation
– 4.3 Database problems
• 5 Sequencing and scheduling
– 5.1 Sequencing on one processor
– 5.2 Multiprocessor scheduling
– 5.3 Shop scheduling
– 5.4 Miscellaneous
• 6 Mathematical programming
• 7 Algebra and number theory
– 7.1 Divisibility problems
– 7.2 Solvability of equations
– 7.3 Miscellaneous
Γιάννης Ρεφανίδης 306
• 9 Logic
– 9.1 Propositional logic
– 9.2 Miscellaneous
• 10 Automata and language
theory
– 10.1 Automata theory
– 10.2 Formal languages
• 11 Computational geometry
• 12 Program optimization
– 12.1 Code generation
– 12.2 Programs and
schemes
• 13 Miscellaneous
http://en.wikipedia.org/wiki/List_of_NP-complete_problems
154
Αντιμετώπιση NP -προβλημάτων
Γιάννης Ρεφανίδης 307
Δύο προσεγγίσεις
• Έξυπνοι αλγόριθμοι
– Μολονότι το πρόβλημα παραμένει NP –πλήρες,
μπορούμε να το λύσουμε πολλές τάξεις μεγέθους
γρηγορότερα.
• Προσεγγιστικές λύσεις
Γιάννης Ρεφανίδης 308
155
Έξυπνοι αλγόριθμοι
• Τα NP -προβλήματα δεν λύνονται σε
πολυωνυμικό χρόνο.
• Ωστόσο, υπάρχουν πολλές εκδοχές μη-
πολυωνυμικού χρόνου.
• Για παράδειγμα:
– Άλλο 2n και άλλο 2sqrt(n) .
• Άλλα 2n και άλλο 1.1n .
Γιάννης Ρεφανίδης 309
Κάλυμμα κόμβων – Απλοϊκός αλγόριθμος
• Απλοϊκός αλγόριθμος (brute force)
• Ελέγχουμε όλα τα υποσύνολα κόμβων του
γράφου, από τα μικρότερα προς τα μεγαλύτερα,
μέχρι να βρούμε ένα που να καλύπτει όλες τις
ακμές.
– 2n υποσύνολα
Γιάννης Ρεφανίδης 310
156
• Εξετάζουμε τους κόμβους, έναν-έναν, και
αποφασίζουμε για κάθε κόμβο αν θα μπει στο
κάλυμμα κόμβων ή όχι.
Δένδρο αναζήτησης
Γιάννης Ρεφανίδης 311
Βελτιωμένο δένδρο αναζήτησης (1/2)
• Εξετάζουμε μια-μία τις ακμές που δεν
καλύπτονται.
– Δίνουμε προτεραιότητα στις ακμές για τις οποίες δεν
έχει ληφθεί απόφαση για κανένα από τα άκρα τους.
Γιάννης Ρεφανίδης 312
157
Βελτιωμένο δένδρο αναζήτησης (2/2)
• Και άλλη βελτίωση: Κάθε φορά που
αποφασίζουμε ότι ένας κόμβος δεν είναι στο
κάλυμμα κόμβων, όλοι οι γείτονές του πρέπει
υποχρεωτικά να είναι.
– Σε ένα βήμα μπορεί να αποφασίζονται τουλάχιστον δύο
κόμβοι !
Γιάννης Ρεφανίδης 313
Ανάλυση
• Αφού σε κάθε κόμβο αποφασίζουμε τουλάχιστον
2 κόμβους, και κάθε κόμβος έχει 3 παιδιά, πόσους
κόμβους έχει το βελτιωμένο δένδρο αναζήτησης;
– 3n/2
• Συγκρίνετε το 2n με το 3n/2 = 1.733n
– 250 = 1.13·1015
– 1.73350 = 8.71·1011
• Και δεν έχουμε λάβει υπόψη ότι μπορεί σε κάθε
επίπεδο να έχουμε περισσότερες από 2 αναθέσεις.
Γιάννης Ρεφανίδης 314
158
Ανεξάρτητο σύνολο (1/2)
• Μπορούμε να εφαρμόσουμε μια παρόμοια
προσέγγιση για το ανεξάρτητο σύνολο.
• Σε κάθε βήμα επιλέγουμε μια ακμή, και κάνουμε
ανάθεση στους δύο κόμβους της:
– Τρεις επιλογές: Είτε κανείς, είτε μόνο ένας.
Γιάννης Ρεφανίδης 315
Όταν ένας
κόμβος γίνεται
κόκκινος, οι
γειτονικοί του
γίνονται μαύροι.
Ανεξάρτητο σύνολο (2/2)
• Ειδικός χειρισμός όταν ένα από τα δύο άκρα της
ακμής έχει αποφασιστεί.
• Περιπτώσεις:
Γιάννης Ρεφανίδης 316
159
Ανάλυση
• Και στο ανεξάρτητο σύνολο:
– Ο παράγοντας διακλάδωσης είναι 3.
– Αποφασίζουμε τουλάχιστον δύο κόμβους ανά
επίπεδο.
• Άρα, το πλήθος των κόμβων είναι 1.733n .
Γιάννης Ρεφανίδης 317
Πόσο χαμηλότερα μπορούμε να πάμε;
• Ανεξάρτητο σύνολο:
– 1.189n ή 1.211n
• Κλίκα
– 1.189n ή 1.211n
• 3-SAT
– 1.496n
• Ελάχιστος κύκλος / περιπλανώμενος πωλητής
– 2n
Γιάννης Ρεφανίδης 318
160
Πόσο μεγάλο μπορεί να γίνει το n ;
• Ας υποθέσουμε ότι μπορούμε να εξετάσουμε 109
κόμβους.
– Ανεξάρτητο σύνολο:
• 1.189n ή 1.211n 119 κόμβοι
– Κλίκα
• 1.189n ή 1.211n 108 κόμβοι
– 3-SAT
• 1.496n 51 μεταβλητές
– Ελάχιστος κύκλος / περιπλανώμενος πωλητής
• 2n 29 κόμβοι
Γιάννης Ρεφανίδης 319
Χειρότερη περίπτωση
και πραγματικότητα
• Στην πραγματικότητα (μέση περίπτωση) λύνουμε
προβλήματα σημαντικά μεγαλύτερα:
– Ανεξάρτητο σύνολο:
• 1.189n ή 1.211n > 1000 κόμβοι
– Κλίκα
• 1.189n ή 1.211n > 1000 κόμβοι
– 3-SAT
• 1.496n ~10.000 κόμβοι
Γιάννης Ρεφανίδης 320
161
Βιβλιογραφία
Γιάννης Ρεφανίδης 322
Βιβλιογραφία
• Elements of the Theory of Computation, Harry Lewis, Christos Papadimitriou, 2nd edition, 1998.
• Computational Complexity, Christos Papadimitriou, 1994.
• Sebastian Wernicke, CS313, “Introduction to Theoretical Computer Science”, http://www.udacity.com/overview/Course/cs313