Reguláris nyelvek különbsége
Legyen adott két reguláris nyelv, L1, L2. Bebizonyítjuk, hogy a különbségük, L = L1 ∖ L2 is reguláris nyelv.
Ötlet
Valójában nincs sok bizonyítanivaló. Két halmaz különbségére ugyanis igaz a következő összefüggés:
ahol L2′ az L2 nyelv komplementere. A reguláris nyelvek metszetéről szóló fejezetből és a reguláris nyelv komplementeréről szólóból tudjuk, hogy a reguláris nyelvek mindkét műveletre zártak. Ez azt jelenti, hogy meg tudunk szerkeszteni olyan automatát, amely nyelvek metszetét fogadja el, és olyat is, amely egy nyelv komplementerét. Ezekkel az automatákkal megszerkeszthetjük azt az automatát, amely az L1 ∩ L2′ nyelvet fogadja el, ez viszont egyben az L1 ∖ L2 nyelv is.
Példa
Adott ez az A1 automata, amely elfogadja az összes olyan szót, amelyben páros számú 1 van:
és az A2 automata, amely a páratlan számú 0-t tartalmazó szavakat fogadja el:
Megszerkesztjük azt az automatát, amely e nyelvek különbségét fogadja el. Ehhez szükségünk van az A2′ automatára, amely az A2 automata komplementere. Csak felcseréljük a végállapotokat és a nem végállapotokat:
Most már csak megszerkesztjük az A automatát, amely az L(A1) és L(A2′) nyelvek metszetét fogadja el:
Források
Fejezetek: A reguláris nyelvek zártsága, Reguláris nyelvek uniója, Reguláris nyelvek metszete, Reguláris nyelvek különbsége, Reguláris nyelv komplementere, Reguláris nyelvek összefűzése, Reguláris nyelv lezárása