Possiamo regolare una lingua non regolare tramite concatentazione?


8

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?


5
Benvenuto in CS.SE! La nostra missione è in parte quella di creare un archivio di domande di alta qualità e le loro risposte. Pertanto, preferiremmo che tu evitassi di cambiare la domanda in modo da invalidare le risposte esistenti o cambiare sostanzialmente ciò che stai chiedendo; e preferiamo che tu faccia una domanda per domanda. La tua domanda iniziale era generale e ragionevole. La tua EDIT pone alcune domande diverse. Se hai una domanda di follow-up, preferiamo che la pubblichi separatamente come nuova domanda, non modificare la domanda originale.
DW

1
Rimuoverò le domande successive da questo post, ma puoi trovarle con la cronologia delle revisioni se desideri pubblicarle separatamente.
DW

Che cosa hai provato? Dove ti sei bloccato? Non vogliamo fare solo il tuo lavoro (domestico) per te; vogliamo che tu capisca. Tuttavia, poiché non sappiamo quale sia il tuo problema di fondo, quindi non possiamo iniziare ad aiutarti. Vedi qui per una discussione pertinente. Se non sei sicuro di come migliorare la tua domanda, perché non chiedere in giro in Computer Science Chat ? Potresti anche voler consultare le nostre domande di riferimento .
Raffaello

(Probabilmente è stato chiesto anche questo prima.)
Raffaello

@Raphael Ho modificato la domanda per contenere la domanda specifica che mi chiedevo e la mia logica, tuttavia è stata rimossa da DW sopra. Inoltre, questo non è per i miei compiti, è perché il mio professore non mi ha dato credito per una prova che ho fatto in questo modo e voglio assicurarmi che la mia comprensione sia corretta prima di parlarne con lui (è piuttosto irragionevole parlare con lui , per non parlare di difficile comprensione).
Kenny Loveall,

Risposte:


3

Se permettiamo ad di essere la lingua vuota, che è regolare, allora abbiamo che .AL={w1w2|w1A,w2B}==A

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 regolareBAL

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.B={bcndn|n>0}AL={w1w2|w1A,w2B}B

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 . CostruireLM=(S,Σ,δ,q0,F)LALbQbQBbcdSbM=(S,Σ,δ,q0,F) , dove si comporta esattamente come , ad eccezione del fatto che .δδδ(q0,ε)=Q

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 perC={cndn|n>0}wCQFMwΣCwAwbwMwMwbwQFM. Tuttavia, a causa della nostra scelta di , non può essere il caso che , quindi deve rifiutare .wwbwLMw

Quindi accetta , ma questo linguaggio non è regolare, portando a una contraddizione.MC

Quindi, se non è vuoto, allora non può essere regolare.AL


12

Sì questo è possibile. Considera l'esempio riportato di seguito:

Sia dove è primo. Questo non è regolare. Sia dove . Questo è regolareB=1ppA=1nnN

AB ci darà semplicemente con e questo è regolare poiché qualsiasi numero maggiore di può essere rappresentato come dove1nn>222+xx>0


Cosa ne pensi di questo? e considera . È banale vedere che è isomorfo a dove è un numero pari maggiore di 2, che è ovviamente regolare. B=1pBBBB1nn

12

Sia un alfabeto non vuoto. Lasciate che sia qualsiasi lingua non regolari sul contenente la parola vuota e lasciare che . Quindi è regolare.ΣBΣA=ΣL=AB=A


4
A peggiorare la situazione: lascia che sia un linguaggio non regolare e che . Quindi è regolare. BA=L=AB=A
Hendrik Jan

Questo argomento funziona solo se contiene la parola vuota. Esistono lingue irregolari che non contengono la parola vuota. B
ymbirtt

@ Hendrik-Jan Hai perfettamente ragione, e questa è la soluzione migliore!
J.-E.

6

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 .BB=AAB={uvuAvB}BBBB

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.B={cannP}PAAABABca

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 cheuAAABL1=ABucaL1{uc}L2={wucwABucwuca}={waucwAB}L3={annP}wL2vAkNucw=vcakwcw=akL3 ; viceversa, se quindi così ). è un noto linguaggio non regolare, abbiamo una contraddizione.wL3cwBucwABL3


Questa prova non funziona con una non regolare fintanto che il simbolo "stopper" appare solo come tale? B
Raffaello

@Raphael Sì, questa è una condizione sufficiente.
Gilles 'SO-smetti di essere malvagio' il

0

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.LALA0LLL

Puoi trovare molte letture interessanti su Google Scholar se cerchi qualcosa come "un'approssimazione della lingua normale senza contesto".

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.