La stella kleene di un linguaggio unario infinito produce sempre un linguaggio regolare


8

Sia , dove e per tutto .L={ann0}a0=ϵan=an1an1

Pertanto costituito da sequenze di di tutte le lunghezze, inclusa una sequenza di lunghezza . Lasciate essere qualsiasi sottoinsieme infinito di . Devo dimostrare che esiste sempre un DFA per riconoscere .La0L2LL2

Se è un sottoinsieme finito è molto ovvio dato che sarebbe un DFA e quindi dalla chiusura di Kleene sarebbe riconosciuto da un DFA. Ma non riesco a ottenerlo per un sottoinsieme infinito poiché potrebbe non essere espresso come DFA quando, ad esempio, le lunghezze delle stringhe sono prime.L2L2L2L2

Risposte:


8

Supponiamo che ci siano due parole nella lingua le cui lunghezze sono relativamente prime. Lascia che siano queste lunghezzex e y. Sappiamo (vedi questo ) che aggiungendo ripetutamente questi numeri, possiamo ottenere qualsiasi numero maggiore di(x1)(y1)1. Quindi sex e y siamo 13 e 7, possiamo scrivere qualsiasi numero maggiore di 72 come una combinazione lineare di 7 e 13. Cosa significa questo per noi:L2 consiste in una lingua finita arbitraria (regolare, come tutte le lingue finite), in unione con la lingua {wa|a|>(x1)(y1)1}. Questa lingua è regolare poiché è la lingua di tutte le parole con una serie finita di parole rimosse. DaL2 è un'unione di lingue regolari, deve anche essere regolare.

Se tutte le parole in L2 hanno lunghezze che condividono un fattore comune massimo (chiama questo fattore comune m), quindi ripeti l'argomento sopra, ma invece di utilizzare le lunghezze delle stringhe, usa le lunghezze delle stringhe divise per m. In questo caso,L2 sarà la concatenazione di una lingua finita arbitraria (regolare) e della lingua {w(am)|w|>m2[(x/m1)(y/m1)1]}, anche regolare (poiché $ (a ^ m) ^ * è regolare e ne stiamo rimuovendo finitamente molte parole).

Ad esempio, supponiamo che tutte le parole in L avere un GCF di 2 e la lingua contiene le parole a4 e a10. abbiamom=2, x/m=4/2=2, e y/m=10/2=5, che sono relativamente primi. Pertanto, sappiamo che possiamo ottenere qualsiasi parola la cui lunghezza sia multipla dim se la lunghezza è maggiore di m2[(x/m1)(y/m1)1]=22[(21)(51)1]=(4)(3)=12 concatenando a4 e a10.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.