[2021] [Diciembre] [Ejercicio 2] [Parte b]

[2021] [Diciembre] [Ejercicio 2] [Parte b]

de Wilson Vera -
Número de respuestas: 5

En la solución de la parte b las reglas de derivación son:

S -> aS#b | XC#b

X -> aXb | a

C -> cC#b | c#b

La duda es como controla que por cada par de ab que tengo en X tenga dos #b porque según el lenguaje por cada a o b tiene que haber un #b

Por ejemplo con estas regla de derivación se derivar la tira aaaabbbc#b#b


En respuesta a Wilson Vera

[2021] [Diciembre] [Ejercicio 2] [Parte b]

de Santiago Gongora -

Buenas tardes Wilson,

la tira que ponés de ejemplo ( aaaabbbc\#b\#b ) pertenece al lenguaje y está bien que se derive de la gramática. Vayamos paso a paso.

El lenguaje es  L_2 = \{x=a^j b^k c^l(\#b)^{j-k+l}: j>k \geq 0 \wedge l>0\} . Reordenando un poco las potencias, nos queda
L_2 = \{x=a^jb^kc^l(\#b)^l(\#b)^{j-k}: j>k\geq0 \wedge l>0\}

Pero además, como j>k podemos decir que j=k+s con s>0. Entonces reescribimos:
L_2 = \{x=a^{k+s}b^kc^l(\#b)^l(\#b)^s: k\geq0 \wedge l>0 \wedge s>0 \} y reordenamos de nuevo los índices:

L_2 = \{x=a^s a^k b^k c^l (\#b)^l (\#b)^s: k\geq0 \wedge l>0 \wedge s>0 \} 

Una vez obtenida esa expresión, veamos cómo se relaciona con cada regla de producción:

  • S -> aS#b: esta regla es por si se quiere tener un valor de s\geq2. En caso de que s=1 no se usa.
  • S -> XC#b: esta regla es para terminar de formar las dependencias del índice s y pasar a formar las de k (con la variable X) y las de l (con la variable C). El \#b del final es para asegurar que  s>0, y su a compañera va a estar en la última derivación de X.
  • X -> aXb: aquí se generarían los k pares de a y b
  • X -> a: y este es el mencionado símbolo que acompaña al \#b de la regla S -> XC\#b, para obligar a s>0.
  • C -> cC#b: esta regla permite generar pares de c y \#b para cuando l>1
  • C -> c#b: y esta regla permite asegurar l>0

Entonces vos ponías de ejemplo a la tira aaaabbbc\#b\#b que, con los índices de la expresión
L_2 = \{x=a^s a^k b^k c^l (\#b)^l (\#b)^s: k\geq0 \wedge l>0 \wedge s>0 \}  sería:
  • s=1 y es correcto porque s>0
  • k=3 y es correcto porque k\geq0
  • l=1 y es correcto porque l>0

Fijate que deshaciendo el cambio de notación (j=k+s), obtenemos que el valor de j sería:

j=k+s = 3 + 1 = 4

y que, por lo tanto,  se cumple la restricción original:

j>k\geq0 porque 4>3\geq0

Decime si quedó un poquito más claro ahora y en caso contrario, volvé a preguntar :)

Saludos,
Santi


En respuesta a Santiago Gongora

[2021] [Diciembre] [Ejercicio 2] [Parte b]

de Wilson Vera -
En la letra confundí una signo. Pensé que era j + k + l.


En respuesta a Wilson Vera

[2021] [Diciembre] [Ejercicio 2] [Parte b]

de Santiago Gongora -
¡Buenísimo que pudieras encontrar dónde estaba el error! :)

Cualquier cosa a las órdenes,
Santi


En respuesta a Santiago Gongora

[2021] [Diciembre] [Ejercicio 2] [Parte b]

de Wilson Vera -
Estaría bueno que la letra fuera más grande, mas que nada cuando hay sub índices o supra índices.

Sino la otra es que me lleve una lupa al examen... o agende cita con mi oculista...