Alla mia domanda vengono sostanzialmente date tre lingue A, B e L, in cui L è A e B concatenate insieme e B si dimostra non regolare, è possibile trovare una A che rende L regolare?
Alla mia domanda vengono sostanzialmente date tre lingue A, B e L, in cui L è A e B concatenate insieme e B si dimostra non regolare, è possibile trovare una A che rende L regolare?
Risposte:
Se permettiamo ad di essere la lingua vuota, che è regolare, allora abbiamo che .
Per il problema leggermente più interessante in cui A deve essere un linguaggio regolare non vuoto, allora possiamo costruire un tale che nessuna non vuoti comporta un regolare
Sia . Sia una qualsiasi lingua normale e considera . Si noti che, contrariamente a quanto ipotizzato in J.-E. La risposta di Pin, è irregolare ma non contiene la parola vuota.
Supponiamo che sia regolare. Esiste qualche DFA, , che accetta . Indipendentemente da come è costruito, sappiamo che ogni parola in deve avere un ultima occorrenza di . Lascia che sia l'insieme degli stati che hanno viaggiato immediatamente dopo l'ultima in tutti i possibili attraversamenti accettanti. Si noti che non può essere vuoto, poiché la stringa più corta in è . Sia l'insieme degli stati visitati in tutti i possibili attraversamenti accettabili ad un certo punto dopo l'ultimo . Costruire , dove si comporta esattamente come , ad eccezione del fatto che .
Dichiaro che questo NFA accetta la lingua . Per ogni , dobbiamo avere che c'è qualche attraversamento da un elemento di ad un elemento di , poiché deve accettare una stringa con questo come suffisso. Per ogni , possiamo scegliere un e formare la parola . Se accetta , allora deve essere il caso che accetta , dal momento che deve esserci stato un attraversamento da qualche stato in a che è valido anche per. Tuttavia, a causa della nostra scelta di , non può essere il caso che , quindi deve rifiutare .
Quindi accetta , ma questo linguaggio non è regolare, portando a una contraddizione.
Quindi, se non è vuoto, allora non può essere regolare.
Sì questo è possibile. Considera l'esempio riportato di seguito:
Sia dove è primo. Questo non è regolare. Sia dove . Questo è regolare
ci darà semplicemente con e questo è regolare poiché qualsiasi numero maggiore di può essere rappresentato come dove
Sia un alfabeto non vuoto. Lasciate che sia qualsiasi lingua non regolari sul contenente la parola vuota e lasciare che . Quindi è regolare.
Data una lingua , la lingua è regolare. A parte questa banale soluzione, non è sempre possibile trovare un linguaggio non vuoto tale che sia regolare. E 'possibile per molti non regolare (ad esempio se contiene la parola vuota , o se è su un alfabeto unario ), ma non per tutti .
Prendi dove è l'insieme di numeri primi. Qualunque sia , se non è vuoto allora non è regolare, perché per testare l'appartenenza ad , è necessario (a causa del simbolo "stopper" ) utilizzare memoria potenzialmente illimitata per testare la primalità del numero di ' s alla fine.
Per dimostrarlo, lascia che (poiché abbiamo assunto che non sia vuoto). Se è regolare, lo è anche , e così è il quoziente sinistro di del singleton che è . Questo linguaggio è solo (se allora esiste e tale che , e poiché contiene b ^ kno , ciò implica che ; viceversa, se quindi così ). è un noto linguaggio non regolare, abbiamo una contraddizione.
Mentre la tua domanda richiede una prova esistenziale, mi ricorda il ramo del comp. sci. chiamato approssimazioni regolari.
L'idea è quella di prendere una lingua non regolare e quindi trovare una lingua regolare tale che in una condizione / sottoinsieme di (dove è la differenza simmetrica ), cioè trovare una lingua regolare che è "arbitrariamente vicino" a per alcuni sottoinsiemi a cui tieni. Spesso lo realizzi prendendo un sottoinsieme finito di con grande misura sul tuo sottoinsieme di interesse e quindi concatenandolo con un linguaggio regolare accuratamente scelto.
Puoi trovare molte letture interessanti su Google Scholar se cerchi qualcosa come "un'approssimazione della lingua normale senza contesto".