Διαφορά κανονικών γλωσσών
Έστω δύο κανονικές γλώσσες L1, L2. Θα αποδείξουμε ότι η διαφορά τους L = L1 ∖ L2 είναι επίσης κανονική γλώσσα.
Η ιδέα
Στην πραγματικότητα δεν υπάρχουν πολλά να αποδείξουμε. Για τη διαφορά δύο συνόλων ισχύει η ακόλουθη σχέση:
όπου L2′ είναι το συμπλήρωμα της γλώσσας L2. Από τα κεφάλαια για την τομή κανονικών γλωσσών και για το συμπλήρωμα κανονικής γλώσσας γνωρίζουμε ότι οι κανονικές γλώσσες είναι κλειστές ως προς αυτές τις δύο πράξεις. Αυτό σημαίνει ότι μπορούμε να κατασκευάσουμε αυτόματο που αποδέχεται την τομή γλωσσών και αυτόματο που αποδέχεται το συμπλήρωμα μιας γλώσσας. Μπορούμε λοιπόν να χρησιμοποιήσουμε αυτά τα αυτόματα για να κατασκευάσουμε αυτόματο που θα αποδέχεται τη γλώσσα L1 ∩ L2′, η οποία είναι ταυτόχρονα η γλώσσα L1 ∖ L2.
Παράδειγμα
Έστω το αυτόματο A1, που αποδέχεται όλες τις λέξεις που περιέχουν άρτιο πλήθος μονάδων:
και το αυτόματο A2, που αποδέχεται τις λέξεις που περιέχουν περιττό πλήθος μηδενικών:
Θα κατασκευάσουμε το αυτόματο που θα αποδέχεται τη διαφορά αυτών των γλωσσών. Χρειαζόμαστε λοιπόν το αυτόματο A2′, που θα είναι το συμπλήρωμα του αυτομάτου A2. Απλώς εναλλάσσουμε τις τελικές με τις μη τελικές καταστάσεις:
Τώρα απομένει να κατασκευάσουμε το αυτόματο A, που θα αποδέχεται την τομή των γλωσσών L(A1) και L(A2′):
Πηγές
Κεφάλαια: Κλειστότητα κανονικών γλωσσών, Ένωση, Τομή, Διαφορά, Συμπλήρωμα, Παράθεση, Κλειστότητα Kleene