Se


8

Abbiamo due lingue: L1,L2. Lo sappiamoL1L2 è un linguaggio normale, quindi la mia domanda è se L2L1 è normale?

Cerco di trovare un modo per dimostrarlo ...

Ovviamente non posso supporre che L1,L2sono regolari ...
Quindi cerco un modo per dimostrarlo.

Vorrei avere qualche suggerimento!

Grazie!


Risposte:


7

No, L2L1 non è necessariamente regolare.

Permettere L1={0,1}*, che è regolare e L2={1}∪{0n1n|n≥1}, che non è. PoiL1L2 è l'insieme di tutte le stringhe che terminano con 1, che è normale, ma L2L1 è l'insieme di tutte le stringhe che iniziano con 1, inizia con un numero diverso da zero 0seguito da almeno altrettanti 1S. Questa lingua non è regolare, poiché la sua intersezione con{0m1n|m,n≥1} è {0m1n|1≤m≤n}, che non è regolare.


Grazie David, ma perché è il "{1}∪⋯" a L2? perché ne abbiamo bisogno? Grazie!
— stud1

1
@ stud1 Per assicurarlo L1L2è regolare.
— David Richerby,

Ma L1L2 (senza il {1}) sono ancora tutte le parole che finiscono con 1, giusto? Quindi, cerco ancora di capire perché abbiamo bisogno di {1}, Spero vada bene lo sto chiedendo :-) Grazie!
— stud1

1
@ stud1 Se si elimina {1} quindi, ad esempio, 1∉L1L2. Più in generale, le uniche stringhe che sarebbero dentroL1L2 sarebbero quelli che finiscono in 0mwn per m≥n≥1.
— David Richerby,

1
@ stud1 Corretto.
— David Richerby,

13

Ho pubblicato solo un suggerimento, quindi ho visto altre risposte complete, quindi questa è una soluzione completa (nascosta) succinta :-)

Permettere L1={1p|p è primo}, L2={1*0}; noi abbiamoL1L2={11+0} che è normale, ma L2L1={1*01p|p è primo} che non è regolare.


1
Soluzione elegante!
— Anton Trunov,

2
@AntonTrunov: abbastanza elegante :-) L2={1∗0} può essere usato per "mascherare" qualsiasi UNARIO non regolare L1, ma non appena vengono scambiati L1è di nuovo "esposto" :-)
— Vor

Di che significato si tratta + a 11+?
— stud1

1
@ Stud1: 1+ significa "uno o più 1S"; in altre parole è una" scorciatoia "per {1n|n≥1}. Così{11+0}={110,1110,11110,...}
— Vor

6

Questo non è un suggerimento, ma una risposta completa. Non continuare a leggere se stai ancora cercando di risolvere.

Non ce n'è bisogno L2⋅L1 essere regolari.

Permettere UN essere una lingua unaria (non regolare) tale che UN⋅UNè regolare. Tali lingue possono essere trovate nel post qui . AssumereUN è sopra l'alfabeto {un'}.

Definire L1={B}⋅UN e L2=UN⋅{B}. Quindi ottieniL1⋅L2={B}⋅UN2⋅{B}, che è regolare. Però,L2⋅L1=UN⋅{BB}⋅UN, che può essere facilmente dimostrato di non essere regolare, in base a UN essere non regolari.


1

Le seguenti regole definiscono il linguaggio associato a qualsiasi espressione regolare. Regola 1 La lingua associata all'espressione regolare che è solo una singola lettera è quella sola parola di una lettera e la lingua associata ad A è solo {A}, una lingua di una sola parola. Regola 2 Se r, è un'espressione regolare associata alla lingua L, e r 2 è un'espressione regolare associata alla lingua L2,

(i) L'espressione regolare (rl) (r2) è associata alla lingua L, volte L 2. lingua (r, r2) = L1L 2 (ii) L'espressione regolare r, + r2 è associata alla lingua formata dal unione degli insiemi L1 e L2. lingua (rl + r2) = L, + L2 (iii) La lingua associata all'espressione regolare (rl) * è LI *, la chiusura di Kleene dell'insieme LI come un insieme di parole. lingua (rl *) = L1 *

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.