Clausula de Kleene

Clausula de Kleene

de Ivan Alberto Najmias Marjovsky -
Número de respuestas: 1

Hola una consulta en genera. Si yo tengo por ejemplo que tengo que poner 5 numeros cualquiera de 0 al 9, puedo hacer esto: (0/1/2/3/4/5/6/7/8/9)^5?
Ósea usar en vez de * o ponerlo 5 elevarlo directamente a lo que quiera. Se que teoricamente tiene sentido pero como por ahora nunca lo vi aplicado por si acaso queria preguntar! Gracias.

En respuesta a Ivan Alberto Najmias Marjovsky

Re: Clausula de Kleene

de Santiago Gongora -
Hola Iván,

no, no se puede hacer eso. Si querés 5 números cualquiera seguidos, entonces la expresión regular r es (perdón por la redundancia, pero es para dejarlo claro):

 r= (0|1|2|3|4|5|6|7|8|9)(0|1|2|3|4|5|6|7|8|9)(0|1|2|3|4|5|6|7|8|9)(0|1|2|3|4|5|6|7|8|9)(0|1|2|3|4|5|6|7|8|9)

Hacer  (0|1|2|3|4|5|6|7|8|9)^* no sería válido, pues eso te daría una secuencia de 0 o más números. Particularmente sí que podés generar una secuencia de 5 números, pero también vas a tener secuencias de 4, de 6, de 8, de 135 y de ningún número (al generarse la tira vacía  \epsilon ).

Acordate que la definición de clausura de Kleene de un lenguaje L es:
  •  L^0 = \{\epsilon\}
  • L^i = L.L^{i-1}
  • L^* = \bigcup^\infty_0 L^i (intuición: L repetido contiguamente 0 o más veces)

Cualquier consulta a las órdenes,
Santi