Różnica między zwykłymi językami
Kapitoly: Zamykanie języków regularnych, Unifikacja, Dostęp, Różnica, Uzupełnienie, Konkatenacja, Wnioski
Mamy dwa języki regularne L1, L2. Udowodnimy, że ich różnica L = L1 ∖ L2 jest również językiem regularnym.
Idea
Tak naprawdę nie ma wiele do udowodnienia. W rzeczywistości dla różnicy dwóch zbiorów zachodzi następująca relacja:
$$ L_1 \setminus L_2 = L_1 \cap L_2^\prime, $$
gdzie $L_2^\prime$ jest dopełnieniem języka L2. Z rozdziałów o przecięciu języków regularnych i dopełnieniu języków regularnych wiemy, że języki regularne są zamknięte na obie operacje. Oznacza to, że możemy skonstruować automat, który akceptuje przecięcie języków i dopełnienie języka. Możemy więc użyć tych automatów do skonstruowania automatu akceptującego język $L_1 \cap L_2^\prime$, który jest również językiem L1 ∖ L2.
Przykład
Załóżmy automat A1, który akceptuje wszystkie słowa zawierające parzystą liczbę jedynek:
oraz automat A2, który akceptuje słowa zawierające nieparzystą liczbę 0:
Konstruujemy automat, który akceptuje różnicę tych języków. Potrzebujemy więc automatu $A_2^\prime$, który będzie komplementarny do automatu A2. Po prostu zamieniamy stany końcowe i niekońcowe:
Teraz wystarczy skonstruować automat A, który będzie akceptował przecięcie języków L(A1) i $L(A_2^\prime)$: