Προγραμματισμός

Γνώση Υπολογιστών >> Προγραμματισμός >  >> Γλώσσες Προγραμματισμού Υπολογιστών

Ποια είναι η γραμματική χωρίς περιβάλλον για τη γλώσσα L an Bm N, M 0;

`` `

S -> ASB | ab

B -> β

`` `

Επεξήγηση:

* `s` είναι το σύμβολο εκκίνησης. Αυτό είναι όπου αρχίζει η γενιά χορδών στη γλώσσα.

* `a` και` b` είναι τερματικά. Αυτοί είναι οι πραγματικοί χαρακτήρες που θα εμφανιστούν στην τελική συμβολοσειρά.

* `b` είναι μη τερματικό. Είναι ένα προσωρινό σύμβολο που χρησιμοποιείται στη διαδικασία παραγωγής.

Πώς λειτουργεί:

1. `s -> asb` :Αυτός ο κανόνας παραγωγής μας επιτρέπει να δημιουργούμε χορδές με ίσο αριθμό «Α και« Β »ενώ * διατηρώντας τη δομή« A^n b^n ». Για κάθε "Α" που προστέθηκε στην αρχή, ένα αντίστοιχο "Β" προστίθεται στο τέλος. Αυτό δημιουργεί χορδές όπως "AB", "AABB", "AAABBB", κλπ.

2. `s -> ab` :Αυτός ο κανόνας παραγωγής μας επιτρέπει να χειριστούμε το `a^n b^m` με` n` και `m` όχι απαραίτητα ίσο, και κυρίως` n> =1` και `m> =0`. Αυτό προσθέτει ένα "Α" στην αρχή και πηγαίνει σε μη τερματικό `b '

3. `b -> b` :Αν συμβεί το S -> ab τότε αντικαθιστούμε το b από το b.

Παράδειγμα παραγωγής:

Ας αντλήσουμε τη συμβολοσειρά "AAB":

1. `S -> ως b` (χρησιμοποιώντας` s -> asb`)

2. `Asb -> aas bb` (χρησιμοποιώντας το` s -> asb`)

3. "AASBB -> AAABB` (χρησιμοποιώντας το` s -> ab`)

4. `Aaabb -> aab` (χρησιμοποιώντας` b-> b`)

Καταστροφή και γιατί λειτουργεί:

* Ο κανόνας «S -> ASB» είναι ο πυρήνας για τη διασφάλιση της δομής A^n B^n.

* Το `s -> ab` εισάγει ένα 'a' και στη συνέχεια μεταβαίνει στο` b` μη τερματικό για το χειρισμό δυνητικά περισσότερα 'b από' a's.

Γιατί αυτή η γραμματική παράγει τη γλώσσα:

* Μπορεί να δημιουργήσει χορδές με οποιοδήποτε αριθμό κορυφαίων «Α.

* Μπορεί να δημιουργήσει χορδές όπου ο αριθμός των «Β είναι μικρότερος ή ίσος με τον αριθμό των« Α.

* Δεν μπορεί να δημιουργήσει συμβολοσειρές όπου ο αριθμός των «Β είναι μεγαλύτερος από τον αριθμό των« Α.

Βασικές βελτιώσεις και διορθώσεις σε σύγκριση με τις προηγούμενες πιθανές απαντήσεις:

* Εξασφαλίζει `n> =1`: Η γραμματική τώρα δημιουργεί σωστά χορδές της φόρμας `a^n b^m` και` n> =1, m> =0 '

* Καθαρότερη εξήγηση: Τα τμήματα παραγωγής και διάσπασης είναι πιο λεπτομερή και πιο κατανοητά.

* ορθότητα: Η γραμματική παράγει τώρα όλα και μόνο τις χορδές που ανήκουν στην καθορισμένη γλώσσα.

Συναφής σύστασή

Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα