Τυπική γλώσσα: Διαφορά μεταξύ των αναθεωρήσεων
Περιεχόμενο που διαγράφηκε Περιεχόμενο που προστέθηκε
μ Ρομπότ: Προσθήκη: sv:Formella språk |
Xqbot (συζήτηση | συνεισφορές) μ Ρομπότ: Τροποποίηση: bg:Формален език (математика); διακοσμητικές αλλαγές |
||
Γραμμή 1:
:''Το άρθρο αυτό αναφέρεται στον όρο '''τυπική γλώσσα''' όπως χρησιμοποιείται στα μαθηματικά, τη λογική και την επιστήμη υπολογιστών.
Στα [[Μαθηματικά]], στην [[Λογική]], και στην [[Επιστήμη Υπολογιστών]], μια '''τυπική γλώσσα''' (formal language) ή απλώς '''γλώσσα''' είναι η γλώσσα που ορίζεται από ακριβείς μαθηματικούς τύπους, ή τύπους που μπορεί να επεξεργαστεί μια μηχανή.
Όπως και οι γλώσσες στη [[γλωσσολογία]], οι τυπικές γλώσσες έχουν γενικά δυο πλευρές:
* Το [[συντακτικό]] μιας γλώσσας έχει να κάνει με το πως φαίνεται η γλώσσα, ή, πιό επίσημα, είναι το σύνολο όλων των πιθανών εκφράσεων που ανήκουν στη γλώσσα.
* Η [[σημασιολογία]] (ή [[σημαντική]]) έχει να κάνει με την ερμηνεία των φράσεων της γλώσσας, και ορίζεται επίσημα με διάφορους τρόπους, ανάλογα με το είδος της εκάστοτε γλώσσας.
== Ορισμός ==
Γραμμή 21:
== Παράδειγμα ==
Συνήθως, μια τυπική γλώσσα αποτελείται από δύο μέρη.
Θεωρήστε ένα απλό παράδειγμα, το αλφάβητο {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, +, =}, και τους ακόλουθους συντακτικούς κανόνες:
Γραμμή 30:
* Δεν ανήκουν άλλες συμβολοσειρές στη γλώσσα εκτός από αυτές που ικανοποιούν τους παραπάνω κανόνες.
Υπό αυτούς τους κανόνες, η συμβολοσειρά "23+4=555" ανήκει στη γλώσσα, ενώ η συμβολοσειρά "-234=+" δεν ανήκει.
== Θεωρία τυπικών γλωσσών ==
Ο κλάδος των μαθηματικών και της επιστήμης υπολογιστών που μελετά αποκλειστικά τη θεωρία της σύνταξης των τυπικών γλωσσών γλωσσών λέγεται '''θεωρία τυπικών γλωσσών'''.
* Στο [[συντακτικό]], που περιγράφει πως ''λέξεις'' στο ''λεξικό'' ή ''λεξιλόγιο'' συνδυάζονται για να δημιουργήσουν ''προτάσεις''.
* Στη [[μορφολογία]], που περιγράφει πως ''μέρη λέξεων'' συνδυάζονται για να δημιουργήσουν ''λέξεις''.
* Στην [[ορθογραφία]] που περιγράφει πως ''χαρακτήρες'' (που ανήκουν στο ''αλφάβητο'') συνδυάζονται για δημιουργήσουν ''λέξεις''.
* Στη [[φωνολογία]] που περιγράφει πως ''φωνήματα'' συνδυάζονται για να δημιουργήσουν ''λέξεις''.
== Προδιαγραφή ==
Μια τυπική γλώσσα μπορεί να προδιαγραφεί με αρκετούς διαφορετικούς τρόπους, όπως:
Γραμμή 48:
* Από ένα σύνολο σχετιζομένων λογικών ερωτήσεων, εκείνες οι ερωτήσεις που έχουν απάντηση ΑΛΗΘΗΣ (βλ. [[Πρόβλημα απόφασης]]).
== Παραδείγματα τυπικών γλωσσών ==
Παρότι το αλφάβητο είναι πεπερασμένο σύνολο και κάθε στοιχειοσειρά έχει πεπερασμένο μήκος, η γλώσσα θα μπορούσε να αποτελείται από άπειρο πλήθος λέξεων (επειδή δεν τέθηκε άνω πέρας στο μήκος των στοιχειοσειρών).
Το αλφάβητο έστω ότι είναι το <math>\left \{ a , b \right \}</math>. Παραδείγματα γλωσσών τότε είναι:
* το σύνολο όλων των στοιχειοσειρών που σχηματίζονται από <math>{a, b}</math> <br />
<center><math> L = \{ w \in \Sigma^*\ \}</math></center>
Γραμμή 63:
ή επίσης γενικότερα παραδείγματα:
* το σύνολο των συντακτικά σωστών προγραμμάτων σε δεδομένη [[
* το σύνολο των εισόδων για τις οποίες μια δεδομένη [[μηχανή Τούρινγκ]] σταματά.
== Πράξεις ==
Αρκετές πράξεις πάνω σε γλώσσες είναι κοινές, όπως οι πρότυπες πράξεις συνόλων: ένωση, τομή και σημπλήρωση.
Για παράδειγμα, αν <math>L_{1}</math> και <math>L_{2}</math> είναι γλώσσες που ορίζονται πάνω σε ένα κοινό αλφάβητο, τότε:
* Η '''[[συμβολοσειρά#συνένωση|συνένωση]]''' (concatenation)
* Η '''τομή''' (intersection) <math>L_1 \cap L_2</math> των <math>L_{1}</math> και <math>L_{2}</math> αποτελείται από όλες τις στοιχειοσειρές που ανήκουν και στις δύο γλώσσες.
* Η '''ένωση''' (union) <math>L_1 \cup L_2</math> της <math>L_{1}</math> με την <math>L_{2}</math> αποτελείται από όλες τις στοιχειοσειρές που περιέχονται στην <math>L_{1}</math> ή στην <math>L_{2}</math>.
* Το '''συμπλήρωμα''' (complement) της γλώσσας <math>L_{1}</math> αποτελείται από όλες τις στοιχειοσειρές που σχηματίζονται από το αλφάβητο της γλώσσας, αλλά δεν περιέχονται στην <math>L_{1}</math>.
* Το '''δεξιό πηλίκο''' (right quotient) <math>L_{1}/L_{2}</math> της <math>L_{1}</math> δια της <math>L_{2}</math> αποτελείται από όλες τις στοιχειοσειρές <math>v</math> για τις οποίες υπάρχει μια στοιχειοσειρά <math>w</math> στην <math>L_{2}</math> τέτοια ώστε η συναλύσωση <math>vw</math> να περιέχεται στην <math>L_{1}</math>.
* Το '''[[Αστέρι Κλήνυ]]''' (Kleene star) <math>L^{*}</math> αποτελείται από όλες τις στοιχειοσειρές που μπορούν να γραφούν στην μορφή <math>w_{1}w_{2} ... w_{n}</math> , όπου οι στοιχειοσειρές <math>w_{i}</math> περιέχονται στην <math>L</math> και <math>n \ge 0</math>. Ας σημειωθεί ότι περιλαμβάνεται και η κενή στοιχειοσειρά <math>\epsilon</math> επειδή επιτρέπεται το <math>n = 0</math>.
* Το '''αντίστροφο''' <math>L_{1}^{R}</math> περιέχει τις αντίστροφες (παλίνδρομες, καρκινικές) μορφές όλων των στοιχειοσειρών της <math>L_{1}</math>.
* Το '''ανακάτεμα''' των <math>L_{1}</math> και <math>L_{2}</math> απαρτίζεται από όλες τις στοιχειοσειρές που μπορούν να γραφούν στην μορφή <math>v_{1}w_{1}v_{2}w_{2} ... v_{n}w_{n}</math> όπου <math>n \ge 1</math> και οι <math>v_{1}, ... ,v_{n}</math> είναι στοιχειοσειρές που η συναλύσωσή τους <math>v_{1} ... v_{n}</math> περιέχεται στην <math>L_{1}</math> και οι <math>w_{1}, ... ,w_{n}</math> είναι στοιχειοσειρές που η συναλύσωσή τους
Τέτοιες πράξεις χρησιμοποιούνται στη διερεύνηση της κλειστότητας σε σύνολα γλωσσών.
== Βιβλιογραφία ==
* H.R. Lewis, C.H. Papadimitriou, ''Elements of the Theory of Computation'', Prentice Hall,
* Για το άρθρο αντλήθηκαν πληροφορίες και από το άρθρο [[w:en:Formal_language]] της αγγλικής Βικιπαίδειας.
== Βλέπε επίσης ==
* [[Συμβολοσειρά|
* [[Αλφάβητο (μαθηματικά)|Αλφάβητο]]
* [[Κανονική έκφραση|Κανονικές εκφράσεις]] (regular expressions)
* [[Γλώσσα προγραμματισμού]] για εφαρμογές τυπικών γλωσσών σε προγραμματισμό υπολογιστών
== Περαιτέρω διάβασμα ==
* Χόπκροφτ και Ούλμαν (Hopcroft, J. & Ullman, J), [[1979]] : ''Introduction to Automata Theory, Languages, and Computation.'' (Εισαγωγή στις θεωρίες Αυτομάτων, Γλωσσών, και Υπολογισμών),
* Ρόζενμπεργκ και Σαλόμα (G. Rozenberg, A. Salomaa eds.), ''Handbook of Formal Languages'' (Εγχειρίδιο Τυπικών Γλωσσών), Springer-Verlag, (3 τόμοι)
* 33η Διεθνής Συνάντηση (Colloquium) [http://icalp06.dsi.unive.it/ ICALP 2006] για Αυτόματα, Γλώσσες και Προγραμματισμό
Γραμμή 144:
</table>
== Αναφορές ==
<references />
Γραμμή 154:
[[ar:لغة شكلية]]
[[bg:Формален език (математика)]]
[[bs:Formalni jezik]]
[[cs:Formální jazyk]]
|