Θεωρία Υπολογισµού και Πολυπλοκότητα Κεφάλαιο 3. Γλώσσες και Συναρτήσεις 30 Ιανουαρίου 2007 ρ. Παπαδοπούλου Βίκη 1
3.1.1. Αλφάβητο Πως υλοποιούµε σεέναυπολογιστήένααλγόριθµοήµια σχέση; Αλφάβητο ή Γλώσσα Ορισµός: Αλφάβητο, Σ, είναι ένα πεπερασµένο σύνολο από σύµβολα ή γράµµατα. Π.χ. Σ = {0, 1} δυαδικό αλφάβητο Σ = { a, b,, y, z }, αγγλικό αλφάβητο Το σύνολο όλων των χαρακτήρων ASCII.?? 2
3.1.2. Λέξη Ορισµός: Λέξη είναι µια πεπερασµένη ακολουθία συµβόλων ενός αλφαβήτου. Π.χ. 0111010 = λέξη του αλφάβητου Σ = {0, 1} Κενή λέξη, e = λέξη χωρίς σύµβολα Μήκος µιας λέξης = πλήθος συµβόλων της λέξης Π.χ. 011 =? Σ k = σύνολο όλων των λέξεων µήκους k απότοαλφάβητοσ. Π.χ. Σ = { 0, 1 }, Σ 0 = { e }, Σ 1 = { 0, 1 }, Σ 2 =?? ={00, 01, 10, 11} 3
Θήκη Kleene Ορισµός: Θήκη Kleene του αλφαβήτου Σ, Σ, είναι το σύνολο όλων των λέξεων του Σ. Π.χ. {0, 1 } = { e, 0, 1, 00, 01, 10, 11, L }. ή Σ * = Σ 0 Σ 1 Σ 2 L. Παρατηρείστε: Η θήκη Kleene Σ * ενός αλφαβήτου Σ είναι αριθµήσιµο σύνολο?? Είναι άπειρο σύνολο?? Είναι απείρως αριθµήσιµοσύνολο: (ισούται µε τηνένωση µιας συλλογής (άπειρων στοιχείων) από αριθµήσιµα σύνολα(σ k )) 4
Πράξεις σε Λέξεις Παράθεση : Αν x = x 1 x 2 L x m και y = y 1 y 2 L y n xy = x 1 x 2 L x m y 1 y 2 L y n xy =? Για µια λέξη w Σ *, η επανάληψη k φορών της w είναι: Π.χ. (λα) 3 = λαλαλα Η u είναι Υπολέξη µιας λέξης w αν και µόνοανυπάρχουνλέξειςx και y τέτοιες ώστε w= xuy Πχ. 235 υπολέξη της 123589, 235 υπολέξη της 1235 Είναι ανακλαστική σχέση?? Ναι, γιατί (a,a) Υπολέξη, a Σ 5
Πράξεις σε Λέξεις Αντίστροφη µιας λέξης w, w R : Η λέξη διαβασµένη από το τέλος προς στην αρχή (επαγωγικός ορισµός): 1. (βάση) Αν w =0 w R =w=e 2. (επαγωγικό βήµα) Αν w =n+1 και w = y α, για κάποιο y * και α w R = α y R Πχ. οτι R = ι (οτ) R = ιτ ο R = ιτο 6
Παράδειγµα Να δειχθεί ότι x, y Σ *, (xy) R = y R x R (Με επαγωγή) Απόδειξη. (Με επαγωγή στο y ) Βάση: y =0 (y=e) (xy) R = (xe) R = x R y R x R = e R x R = e x R =x R Επαγωγική Υπόθεση: Αν z n (xz) R = z R x R Επαγωγικό Βήµα: y Σ *, y =k+1, y = zσ, z =k, σ Σ (xy) R = (x (zσ) ) R = ((xz) σ) R = σ (xz) R = σ z R x R y R x R = (zσ) R x R = σ z R x R 7
3.1.3. Γλώσσες Ένα υποσύνολο της Θήκης Kleene Σ * του αλφαβήτου Σ, L Σ *, καλείται γλώσσα πάνω στο αλφάβητο Σ. Πχ. L={οχι, ναι} είναι γλώσσα του αλφάβητου Σ ={α, β, γ,..., ω} Ελληνική γλώσσα είναι γλώσσα του αλφάβητου Σ ={α, β, γ,..., ω} Γλώσσα προγραµµατισµού C είναι γλώσσα του αλφάβητου Σ=χαρακτήρες ASCII Τοσύνολοόλωντωνδυαδικώνλέξεωνπουτοσύµβολο 0 εµφανίζεται n φορές, ακολουθούµενο από το σύµβολο 1 άλλες n φορές, για οποιοδήποτε ακέραιο n 0. L ={ e, 01, 0011, 000111, L }. Τοσύνολοόλωντωνδυαδικώνλέξεωνστιςοποίεςοαριθµός των φορών που υπάρχει το σύµβολο 0 ισούται µε τοναριθµό των φορών που υπάρχει το σύµβολο 1. L = { e, 01, 10, 0011, 0101, 1001, 0110, 1010, 1100, L }. 8
Παρατηρείστε Σε οποιαδήποτε γλώσσα: το αλφάβητο στο οποίο ορίζεται η γλώσσα είναι πεπερασµένο. µπορείναπεριέχειάπειροαριθµό απόλέξεις Π.χ.? περιέχει στοιχεία (λέξεις) πεπερασµένου µεγέθους 9
Γλώσσες Πρόταση 3.1. Για οποιοδήποτε αλφάβητο Σ, το σύνολο 2 Σ* είναι µη αριθµήσιµο. Απόδειξη. Υποθέτουµεότι2 Σ* είναι αριθµήσιµο 2 Σ* απείρως αριθµήσιµο. Υπάρχει µία ένα-προς-ένα και επί συνάρτηση g: 2 Σ* N. To Σ * είναι απείρως αριθµήσιµο Υπάρχει µία ένα-προς-ένα και επί συνάρτηση f: Σ * N. Υπάρχει µία ένα-προς-ένα και επί συνάρτηση f 1 : 2 Σ * 2 N. Υπάρχει η αντίστροφη της f 1 συνάρτηση h = f 1-1 : 2 N 2 Σ *, η οποία επίσης είναι ένα-προς-ένα και επί. Ησύνθεσηg h: 2 N N είναι επίσης ένα-προς-ένα και επί. g(h(a)) : 2 N 2 Σ * N 2 N είναι απείρως αριθµήσιµο Αντίφαση στο ΘεώρηµατουCantor. 10
Πράξεις σε Γλώσσες: Συνολοθεωρητικές Ένωση: L 1 L 2 = { w w L 1 ή w L 2 } Π.χ. {ακακία, κάκτος} {µαργαρίτα, ρόδι}= {ακακία, κάκτος, µαργαρίτα, ρόδι} Τοµή: L 1 L 2 = { w w L 1 και w L 2 } Π.χ. {00, 01, 11 } {10, 11, 11=?? {11} Συµπλήρωµα: της L είναι το σύνολο των λέξεων που δεν ανήκουν στην L (αλλά ανήκουν στη Θήκη Kleene Σ*, L Σ*) Π.χ. 11
Πράξεις σε Γλώσσες: Γλωσσολογικές Πράξεις Σύµπτηξη: δύο γλωσσών L 1, L 2 είναι µια γλώσσα που περιλαµβάνει όλες οι λέξεις που σχηµατίζονται συµπτήσσοντας µία λέξη από την L 1 µε µία λέξη από τη L 2. L 1 L 2 = { xy x L 1 και y L 1 } Πχ. L 1 = {συν}, L 2 ={ύπαρξη, οµιλία}, L 1 L 2 = {συνύπαρξη, συνοµιλία} Όταν L 1 = L 2 L 2 = LL.. Για κάθε ακέραιο k 1, L k = L k-1 L Π.χ. L = {λα, ο}, L 2 ={λαλα, οο, ολα, λαο } Ησύµπτυξη είναι αντιµεταθετική πράξη? 12
Γλωσσολογικές Πράξεις Η Θήκη Kleene L * µίας γλώσσας L είναι L * = U k 0 L k. Π.χ. {αα}* ={e, αα, αααα, } {αβ, βα, αα, ββ}* =? ={L 2 }*, L = {α,β} ={e, αβ, βα, αα, ββ, αβ, αββα, αβαα, αβββ, βααβ, βαβα, βααα, βαββ, } * = {e} 13
Γλωσσολογικές Πράξεις Επιθεµατική γλώσσα Prefix(L)= { w wv L για κάποια λέξη v} περιέχει τα προθέµατα λέξεων της γλώσσας. Π.χ. L = {oλα, ενα }, Prefix(L)= { ο, ολ, ολα, ε, εν, ενα } Καταληκτική γλώσσα Syffix(L)= { w vw L γιακάποιαλέξηv} περιέχειτιςκαταλήξειςτωνλέξεωντηςγλώσσας. Π.χ. L = {oλα, ενα }, Suffix(L)= {α, λα, ολα, να, ενα } 14
Γλωσσολογικές Πράξεις Η ανάστροφη γλώσσα L R της L, L R = { w R w= uα L, a Σ, w R = αu R } περιέχει όλες λέξεις της γλώσσας «διαβασµένες από το τέλος προς την αρχή» Π.χ. L={oλα, ενα } L R ={αλο, ανε} H διάζευξη των λέξεων a και b είναι η λογική διάζευξη των a και b Π.χ. 0 0 = 0, 0 1 = 1 0 = 1 1 = 1 H διάζευξη L 1 L 2 = { x y x L 1,y L 2, και x = y } 15
Γλωσσολογικές Πράξεις Η γλώσσα δεξιού πηλίκου L 1 / L 2 των γλωσσών L 1 και L 2 L 1 / L 2 = { x xy L 1 για κάποια λέξη y L 2 } Π.χ. L 1 = { w { 0, 1 } * } # 0 (w) είναι άρτιος} L 2 = { 0 } L 1 / L 2 = { w { 0, 1 } * } # 0 (w) είναι περιττός} Η ανάµιξη Mix(L 1,L 2 )={ ρ 1 σ 1 τ 1 L ρ k σ k τ k ρ i, τ i L 1 και σ i L 2,1 i k} Π.χ. L 1 ={σουβλακια, σιεφταλια} L 2 ={πίττα}, k=1 Mix(L 1, L 2 ) ={σουβλακιαπιττασιεφταλια} 16
Γλωσσολογικές Πράξεις Η µεγιστοτική Max(L) = { w L ηλέξηw δεν είναι γνήσιο πρόθεµαλέξηςτηςl} περιέχει όλες τις λέξεις της L οι οποίες δεν είναι γνήσια προθέµατα άλλων λέξεων της L. Π.χ. L 1 ={συν, συνοµιλια, υπερ, υπερβολη, καβγας} Max(L 1 ) ={συνοµιλια, υπερβολή, καβγάς} 17
Παραδείγµατα Γλωσσών 3.1. Παλλιδροµικές Γλώσσες: Kάθε λέξη της γλώσσας διαβάζεται το ίδιο από αριστερά και από δεξιά Π.χ. L={Νίψον ανοµήµατα µη µόναν όψιν} Μια λέξη w Σ* είναι παλίνδροµοανw = w R Μια γλώσσα είναι παλλιδροµική αν: Pal Σ = {w Σ * w = w R } Επαγωγικά: Bάση: e Pal Σ και για κάθε σύµβολο σ Σ, σ Pal Σ. Επαγωγικό Βήµα: Για κάθε λέξη w Σ * και σύµβολο σ Σ, σwσ Pal Σ. Ποίο είναι το µήκος µιας τέτοιας λέξης?? 18
Παραδείγµατα Γλωσσών Γλώσσες µε σύνολα φυσικών αριθµών Λ =αυθαίρετο σύνολο φυσικών αριθµών Binaries(Λ) = { w { 0, 1 } * w = Bin (λ) για κάποιο φυσικό αριθµό λ Λ} και Unaries(Λ) = { w { 1 } * w = Un(λ) για κάποιο φυσικό αριθµό λ Λ} = { 1 λ γιακάποιοφυσικόαριθµό λ Λ ={1, 11, 111, 1111} 19
Ασκήσεις Αποδείξτε (L 1 L 2 ) R = L 2R L 1 R Απόδειξη. (L 1 L 2 ) R = w R w L 1 L 2 } = { (uv) R u L 1 και v L 2 = { v R u R u L 1 και v L 2 } = { v R v L 2 }{ u R u L 1 } = L 2R L R 1 20
21