Proponer una CFG para la expresion regular 0*1(0+1)* y derivar cadenas
Fuente: Parcial 2 — SI2002-1 7309 (2025-1)
Enunciado
Proponga una gramatica libre de contexto para la expresion regular 0∗1(0+1)∗.
Tambien indique las reglas aplicadas para generar las siguientes cadenas:
| Generar | Reglas aplicadas |
|---|---|
| 1 | |
| 01 | |
| 0110 | |
| 00100 | |
| 101 | |
| 10111 | |
| 011 |
La expresion regular 0∗1(0+1)∗ describe cadenas que empiezan con cero o mas ceros, luego tienen exactamente un 1, y despues cualquier combinacion de 0‘s y 1‘s. Para convertirla en gramatica, simplemente asignamos un no terminal a cada parte: A genera los ceros iniciales (0∗), B genera el 1 obligatorio seguido del resto (1(0+1)∗), y C genera la cola libre ((0+1)∗). La produccion inicial S→AB las conecta.
Las reglas quedan: A→0A∣ε (cero o mas ceros), B→1C (el uno obligatorio), C→0C∣1C∣ε (cualquier sufijo binario). Para derivar una cadena concreta, se aplican las reglas de izquierda a derecha: primero se decide cuantos ceros pone A, luego B coloca el 1, y finalmente C va generando los simbolos del sufijo uno por uno.
Por ejemplo, para 0110: S⇒AB⇒0AB⇒0B⇒01C⇒011C⇒0110C⇒0110. Cada cadena de la tabla se obtiene de forma similar, eligiendo cuantas veces aplicar cada regla recursiva.
CFG G=({S,A,B,C}, {0,1}, P, S) con:
SABC→AB→0A∣ε→1C→0C∣1C∣εDerivaciones:
| Cadena | Reglas aplicadas |
|---|---|
| 1 | S→AB, A→ε, B→1C, C→ε |
| 01 | S→AB, A→0A, A→ε, B→1C, C→ε |
| 0110 | S→AB, A→0A, A→ε, B→1C, C→1C, C→0C, C→ε |
| 00100 | S→AB, A→0A, A→0A, A→ε, B→1C, C→0C, C→0C, C→ε |
| 101 | S→AB, A→ε, B→1C, C→0C, C→1C, C→ε |
| 10111 | S→AB, A→ε, B→1C, C→0C, C→1C, C→1C, C→1C, C→ε |
| 011 | S→AB, A→0A, A→ε, B→1C, C→1C, C→ε |
Gramatica
Solucion
Analisis de la expresion regular
La expresion regular 0∗1(0+1)∗ describe cadenas que:
- Empiezan con cero o mas 0‘s
- Seguidas de exactamente un 1
- Seguidas de cualquier combinacion de 0‘s y 1‘s
Gramatica libre de contexto
SABC→AB→0A∣ε→1C→0C∣1C∣εDonde:
- A genera 0∗ (cero o mas ceros)
- B genera 1(0+1)∗ (un 1 seguido de cualquier cadena)
- C genera (0+1)∗ (cualquier cadena binaria)
Derivaciones para cada cadena
Cadena 1:
S⇒AB⇒B⇒1C⇒1
Reglas: S→AB, A→ε, B→1C, C→ε
Cadena 01:
S⇒AB⇒0AB⇒0B⇒01C⇒01
Reglas: S→AB, A→0A, A→ε, B→1C, C→ε
Cadena 0110:
S⇒AB⇒0AB⇒0B⇒01C⇒011C⇒0110C⇒0110
Reglas: S→AB, A→0A, A→ε, B→1C, C→1C, C→0C, C→ε
Cadena 00100:
S⇒AB⇒0AB⇒00AB⇒00B⇒001C⇒0010C⇒00100C⇒00100
Reglas: S→AB, A→0A, A→0A, A→ε, B→1C, C→0C, C→0C, C→ε
Cadena 101:
S⇒AB⇒B⇒1C⇒10C⇒101C⇒101
Reglas: S→AB, A→ε, B→1C, C→0C, C→1C, C→ε
Cadena 10111:
S⇒AB⇒B⇒1C⇒10C⇒101C⇒1011C⇒10111C⇒10111
Reglas: S→AB, A→ε, B→1C, C→0C, C→1C, C→1C, C→1C, C→ε
Cadena 011:
S⇒AB⇒0AB⇒0B⇒01C⇒011C⇒011
Reglas: S→AB, A→0A, A→ε, B→1C, C→1C, C→ε
Tabla resumen
| Generar | Reglas aplicadas |
|---|---|
| 1 | S→AB, A→ε, B→1C, C→ε |
| 01 | S→AB, A→0A, A→ε, B→1C, C→ε |
| 0110 | S→AB, A→0A, A→ε, B→1C, C→1C, C→0C, C→ε |
| 00100 | S→AB, A→0A, A→0A, A→ε, B→1C, C→0C, C→0C, C→ε |
| 101 | S→AB, A→ε, B→1C, C→0C, C→1C, C→ε |
| 10111 | S→AB, A→ε, B→1C, C→0C, C→1C, C→1C, C→1C, C→ε |
| 011 | S→AB, A→0A, A→ε, B→1C, C→1C, C→ε |