Γενικευμένο μη ντετερμινιστικό πεπερασμένο αυτόματο
Το γενικευμένο μη ντετερμινιστικό πεπερασμένο αυτόματο, με συντομογραφία GNFA, είναι ένα μη ντετερμινιστικό αυτόματο που στις μεταβάσεις του δεν έχει απαραίτητα μόνο σύμβολα του αλφαβήτου, αλλά μπορεί να έχει κανονική έκφραση.
Ορισμός
Το GNFA θα το χρειαστούμε κατά τον αλγόριθμο μετατροπής ενός πεπερασμένου αυτομάτου σε κανονική έκφραση. Το GNFA είναι λοιπόν ένα NFA που έχει μεταβάσεις ορισμένες με κανονικές εκφράσεις. Παράδειγμα ενός τέτοιου GNFA:
Βλέπουμε ότι π.χ. από την κατάσταση q2 οδηγεί μετάβαση στην κατάσταση qf που φέρει την κανονική έκφραση a∗ b. Οι υπόλοιπες απαιτήσεις για το GNFA:
- Η αρχική κατάσταση q0 πρέπει να έχει μετάβαση προς όλες τις άλλες καταστάσεις. Στο σχήμα βλέπουμε ότι από την κατάσταση q0 οδηγούν μεταβάσεις σε όλες τις υπόλοιπες καταστάσεις.
- Στο GNFA υπάρχει μόνο μία τελική κατάσταση και όλες οι άλλες καταστάσεις έχουν μετάβαση προς αυτήν. Όπως φαίνεται στο σχήμα, όλες οι καταστάσεις έχουν βέλος που δείχνει στην qf.
- Η αρχική κατάσταση δεν επιτρέπεται να συμπίπτει με την τελική. Το GNFA έχει επομένως τουλάχιστον δύο καταστάσεις.
- Όλες οι άλλες καταστάσεις, εκτός από την αρχική και την τελική, πρέπει να έχουν μεταβάσεις προς όλες τις άλλες καταστάσεις, εκτός από την αρχική και την τελική. Συμπεριλαμβανομένων των βρόχων (μετάβαση από την κατάσταση qi στην κατάσταση qi).
Μετατροπή συνήθους NFA σε GNFA
Αν έχουμε ένα NFA, η μετατροπή σε GNFA είναι απλή.
- Δημιουργούμε μια νέα αρχική κατάσταση qs και μια ε-μετάβαση προς την παλιά αρχική κατάσταση.
- Δημιουργούμε μια νέα τελική κατάσταση qf και από όλες τις παλιές τελικές καταστάσεις φέρνουμε ε-μεταβάσεις προς την κατάσταση qf. Τις παλιές τελικές καταστάσεις τις κάνουμε απλές καταστάσεις.
- Αν κάπου υπάρχει πολλαπλή μετάβαση (δηλαδή αν από την κατάσταση q1 φτάνουμε στην κατάσταση q2 και με το σύμβολο 0 και με το σύμβολο 1), τότε συγχωνεύουμε αυτούς τους κανόνες σε μία κανονική έκφραση και όλα τα αρχικά σύμβολα τα συνδέουμε με τον τελεστή της ένωσης (δηλαδή επιγράφουμε το βέλος με την κανονική έκφραση 0|1).
- Αν στο αυτόματο λείπει κάποια μετάβαση που σύμφωνα με τον ορισμό θα έπρεπε να υπάρχει, τη δημιουργούμε και την επιγράφουμε με την κανονική έκφραση ∅. Έτσι δεν αλλάζουμε τη γλώσσα που αποδέχεται το αυτόματο, επειδή μια τέτοια μετάβαση δεν εκτελείται ποτέ.
Αυτό το αυτόματο μπορούμε να το χρησιμοποιήσουμε για τη μετατροπή του αυτομάτου σε κανονική έκφραση.
Κεφάλαια: Κανονικές εκφράσεις, Μετατροπή κανονικής έκφρασης σε αυτόματο, Γενικευμένο NFA, Μετατροπή αυτομάτου σε κανονική έκφραση