Lema o napihovanju za regularne jezike
Iz MaFiRaWiki
Naj bo L regularni jezik. Potem za jezik L obstaja neka konstanta n: = c(L) da velja: če je
in
, potem obstajajo
, da lahko z zapišemo kot z = uvw, da je
in
in za
velja
.
[spremeni]
Dokaz
[spremeni]
Uporaba
Lemo o napihovanju uporabljamo predvsem za dokazovanje neregularnosti posameznih formalnih jezikov. Dokaz neregularnosti izbranega jezika L poteka na osnovi dokaza s protislovjem:
- Najprej predpostavimo, da je L regularen jezik.
- Na osnovi predpostavke, da je jezik L regularen, ugotovimo, da
- za jezik L velja lema o napihovanju in zato
- za jezik L obstaja konstanta n iz leme.
- Izberemo neko besedo z, za katero velja
in
.
- Za izbrano besedo z preverimo vse možne delitve na podnize u,v in w
- če za vsako delitev obstaja nek i, da
, tedaj jezik ni regularen;
- sicer nismo dokazali ničesar.
- če za vsako delitev obstaja nek i, da
Pozorni moramo biti na pravilno izbiro besede z ter na to, da res preverimo vse njene možne delitve.
[spremeni]
Primer
Tipičen primer za dokazovanje neregularnosti jezika s pomočjo leme o napihovanju je naslednji:
Ali se da s končnim avtomatom nad abecedo Σ = {a,b} razpoznati jezik
?
Problem razrešimo tako, da pokažemo, da jezik
ni regularen.
[spremeni]
Rešitev
Rešitev: Ali se da s KA razpoznati a^nb^n?
[spremeni]

