DFA a Expresion Regular

March 5, 2019 | Author: FernandoEscher | Category: Regular Expression, Theory Of Computation, Programming Language, Symbols, State (Polity)
Share Embed Donate


Short Description

Esta es una Investigación académica sobre la conversión de un Autómata Finito Determinístico a una Expresión Regular. Pu...

Description

CONVERSIÓN DE AUTÓMATAS FINITOS DETERMINISTICOS A EXPRESIONES REGULARES Investigación Por: Fernando David Irías Escher

1

CONTENIDO ¿Qué es un DFA? ...................................................... .................................................................................. ............................................................ ............................................................... .............................................. ............... 3 ¿Qué es una Expresión Regular? ................................................................ ............................................................................................ ........................................................ .................................... ........ 4 Operaciones de utilidad .................................................................. ............................................................................................... .......................................................... .................................................. ..................... 4 Método de la eliminación de estados ....................................................... ................................................................................... ........................................................ .................................... ........ 5 Ejemplo #1 ............................................................ ........................................................................................ ........................................................... .............................................................. .............................................. ............... 6 Ejemplo #2 ........................................................... ....................................................................................... ........................................................... .............................................................. ........................................... ............ 11 Ejemplo #3 ............................................................ ........................................................................................ ........................................................... .............................................................. ........................................... ............ 15

2

INTRODUCCIÓN Se presenta la siguiente investigación realizada para la clase de Teoría de la Computación que se cursa el quinto período del año 2008. La misma consiste en la investigación, explicación y ejemplificación de un método para convertir Autómatas Autómatas Finitos Determinísticos (DFAs) en Expresiones Regulares.

Al finalizar este informe, se espera que el lector tenga la capacidad de aplicar un método que le facilite la conversión de DFAs a Expresiones Regulares, Regulares, por lo cual se le dará un marco teórico para comprender la nomenclatura que se utilizare a través del estudio. También se desarrollaran tres ejemplos utilizando el método seleccionado, los cuales se explicará paso a paso su resolución.

MARCO TEÓRICO ¿QUÉ ES UN DFA? Un Autómata Finito Determinístico (DFA) no es más que una máquina que consta de un conjunto finito de estados, de ahí el nombre de Máquina de Estados. Uno de estos estados debe ser la entrada de la máquina. En todo DFA debe existir uno o varios estados finales o de aceptación. Un DFA debe constar de un lenguaje (o símbolos de entrada) el cual es el conjunto de caracteres que aceptara dicha máquina. Todo DFA contiene un conjunto de transiciones. Cada estado debe tener una transición por cada símbolo que exista en el lenguaje. Estas transiciones deberán comunican un estado con otro (o se mantiene recursivos en el mismo estado). Una transición puede ser transitada si, y solo si, el símbolo de entrada que se está procesando es uno de los símbolos sí mbolos 1 que permite el paso a través de la transición. Una cadena (o palabra) es una sucesión de símbolos que están contenidos dentro del lenguaje del autómata. Se dice que una cadena es aceptada cuando al haber consumido todos los símbolos contenidos en esta (por medio de las transiciones), se llega a un estado final o de aceptación.

1

Pueden ser Expresiones Regulares como veremos más adelante.

3

¿QUÉ ES UNA EXPRESIÓN REGULAR? Una Expresión Regular es una manera en que se puede representar una máquina de estados. Esta se considera más descriptiva que los DFAs, ya que presenta de una manera más legible para el humano el tipo de cadenas acepta la máquina. Se dice que los DFAs y las Expresiones Regulares son congruentes entre sí, ya que de ambas maneras se pueden representar una infinidad de Máquinas de Estados. Ya que estas se consideran congruentes, congruentes, esta investigación se enfocara en demostrar que se puede hacer una conversión de un DFA a una Expresión Regular. Las Expresiones Regulares constan de tres operaciones básicas: 1. La unión: Se representa con el signo “más” (+). Si tenemos el conjunto A y el conjunto B, se podría decir que la unión de dichos conjuntos (A U B) se representa A + B en una Expresión Regular. 2. La concatenación: Se representa con un punto (.). Normalmente el punto no se escribe, y se toma como concatenación cuando se escriben de la forma “AB”, siendo A y B dos conjuntos. 3. La clausura (o clausura Kleene): Se representa con un asterisco (*) que se escribe seguido del conjunto conjunto al que se le aplica. Por ejemplo A*. Lo que la clausura nos indica es que habrán 0 ó más repeticiones de la cadena A.

OPERACIONES DE UTILIDAD Nos limitaremos a solo establecer algunas de las operaciones que nos serán útiles al momento de desarrollar la conversión 2: 1. ∅∗  ≅ ℇ   ∅   ∅   ∅ … => ∅∗  ≅ ℇ => ∅∗ ≅ ℇ 2. ∅ ≅ ∅ ≅ ∅ 3. ∅ +  ≅  + ∅ ≅ 

2

Tomadas de Teoría de autómatas, lenguajes y computación de Hopcroft.

4

CONVERSIÓN DE UN DFA A UNA EXPRESIÓN REGULAR MÉTODO DE LA ELIMINACIÓN D E ESTADOS Básicamente este método consiste en seleccionar tres estados:  , el cual no deberá ser ni el estado inicial, ni ninguno de los estados finales o de aceptación, también se deberá seleccionar un estado  y  , de manera que  pueda llegar (por medio de transiciones) a  utilizando a  como estado intermedio entre estos. Después de haber seleccionado estos estados, se debe proceder a eliminar el estado  , haciendo una transición que vaya de  a  y que por medio de la concatenación de las transiciones que llegan de  a  y salen de  a  (incluyendo las que hacen un bucle en  ). En caso de que ya exista una transición que va de  a  , se hace la unión de la Expresión Regular de dicha transición con la Expresión Regular de la nueva transición antes creada. Esto se repite hasta que solo existan estados iniciales y finales en el DFA. Luego de tener la máquina de esta forma se debe generar la Expresión Regular a partir de ella. En el párrafo anterior se explico a groso modo (sin ningún detalle) como se debe reducir la máquina de estados, y también vimos que al reducirla la debemos transformar a una Expresión Regular. Ahora vamos a definir paso por paso y con detalle cómo se debe hacer la reducción. Veremos que al hacer la reducción se pueden dar tres casos en los que tendremos que generar la Expresión Regular de una manera ligeramente diferente. Para un mejor entendimiento entendimiento de la eliminación de los estados utilizaremos el siguiente ejemplo:

5

EJEMPLO #1 Haremos la conversión del siguiente DFA a una Expresión Regular:

ILUSTRACIÓN 1: DFA ORIGINAL

PASO 1: Por cada transición  3 que pueda ser recorrida con múltiples símbolos, se hará una transición  (siendo esta una transición que contiene una Expresión Regular) 4 que contenga los símbolos de dicha transición  representados representados como una Expresión Regular, específicamente como una unión.  APLICACIÓN: Como podemos observar, la transición que hace un bucle en  es la única transición que tiene múltiples símbolos con la cual puede ser transitada, por lo tanto la representaremos representaremos como una unión de la siguiente manera: a + b. Nos resulta en:

ILUSTRACIÓN 2: PASO 1

representa el símbolo de la transición.  4 A partir de este momento se tomaran todas las transiciones 3



6

 como transiciones  .

PASO 2: Por cada estado  , se debe verificar si hay una transición  que llegue a cada estado  (donde  =  ) de la máquina. máquina. En caso de no existir esta transición transición se deberá agregar una transición que va desde  hasta  con el valor ∅.  APLICACIÓN: Al aplicar el paso 2 a nuestro DFA, podemos ver que no hay transición de  a , tampoco existe un bucle en , tampoco hay transición de  a  , etc. Por lo tanto agregaremos todas las transiciones que hacen falta para conectar cada estado con el resto de estados de la máquina. Estos estados tendrán el símbolo ø. Por lo tanto nuestro DFA resulta en:

ILUSTRACIÓN 3: PASO 2

PASO 3: Seleccionar un estado  , talque  NO sea un estado inicial i nicial y/o final. Luego, por cada estado  se selecciona un camino, pasando por  , hacia cada estado  del DFA, talque  ≠  y  ≠  . Ahora se crea una transición  que tenga como Expresión Regular el símbolo (o Expresión Regular) de la transición que va de  a  concatenado con el símbolo de la transición que va de  a . Al bucle que se hace en  se le aplicará la operación de clausura (o clausura Kleene) y se concatenará con la Expresión Regular antes encontrada. A esta nueva transición  se le aplica una operación de unión con el símbolo de la transición que va de  a  . La transición  deberá quedar de la forma   ∗  +  . Esta nueva transición  transitará del estado  al estado  .

7

 APLICACIÓN: Ahora bien, seleccionaremos como estado  a  . Haciendo la concatenación da cada transición desde todos los estados  hacia todos los estados  usando a  como intermediario, nos resulta las siguientes Expresiones Regulares: 



 

0

0

0

2

0

3

2

0

2

2

2

3

3

0

3

2

3

3

 Ø  Ø Ø Ø Ø Ø Ø

Ahora le aplicaremos la operación de clausura al bucle de  y haremos la concatenación con el  que ya encontramos. Resulta en: 





0

0

0

2

0

3

2

0

2

2

2

3

3

0

3

2

3

3

Ø∗  Ø∗Ø Ø∗  Ø ∗Ø Ø ∗Ø Ø∗Ø Ø ∗Ø Ø ∗Ø Ø∗Ø

El siguiente paso es hacer la unión del  que ya tenemos con el símbolo de la transición que va de  a  directamente. También agregaremos una columna con la Expresión Regular ya simplificada, por lo tanto obtenemos: 

 



0

0

0

2

0

3

2

0

2

2

2

3

3

0

3

2

3

3



Ø  +  Ø∗ Ø + Ø Ø∗  + Ø Ø∗Ø + Ø Ø∗Ø +  +  Ø∗ Ø + Ø Ø∗ Ø +  Ø∗ Ø +  Ø∗ Ø + Ø

8

Simplificación

 +  Ø  Ø + Ø   Ø

Excelente! Hemos logrado eliminar eliminar el estado  de nuestro DFA. Ahora se deben seguir los mismos pasos hasta tener un DFA que solo contenga el estado inicial y los finales (en este caso  y ). El DFA nos queda de la siguiente manera:

ILUSTRACIÓN 4: PASO 3

Ahora que ya hemos comprendido los pasos esenciales de la eliminación de estados, presentaremos presentaremos la tabla para eliminar el estado  : 



 

Simplificación

0

0

  +   + 

0

2

2

0

2

2

Ø∗  +  + Ø∗  + Ø ØØ∗ + Ø ØØ∗ +  + 

 Ø +

Hemos terminado de eliminar los estados no iníciales y no finales fi nales de nuestro DFA. Aplicando todas las Expresiones Regulares de la tabla anterior a nuestro DFA, nos quedaría así:

ILUSTRACIÓN 5: PASO 3

9

PASO 4: Si tenemos un estado inicial  y un estado final  donde  ≠  , se debería generar una Expresión Regular a partir de este DFA de la forma  + ∗ ∗  ∗, donde R es un bucle en  , S es el camino que va de  a  , U es un bucle en  y T es el camino que va de  a  .

 APLICACIÓN: Primero identificamos las Expresiones Regulares Regulares R, S, U y T. Tenemos que  =  +  +  ,  = ,  =  +  y  = ∅. Ahora que ya tenemos los valores, procedemos a hacer la Expresión Regular final:  =  +  +  +  + ∗∅∗  + ∗ =  +  + ∗    +  ∗

10

EJEMPLO #2 Ahora presentaremos un nuevo ejemplo más corto, pero de mucha importancia, ya que el estado inicial y final son el mismo. Para resolver esto debemos hacer un paso preliminar antes de continuar. Todos los demás pasos se mantienen iguales.

ILUSTRACIÓN 6: DFA ORIGINAL

Antes de comenzar a reducir el DFA, debemos llevar a cabo un paso alternativo que nos permita separar el estado inicial y el estado final en dos estados distintos. PASO A1: Si existe un estado  talque  sea el estado inicial y un estado final, haremos un nuevo estado  que pasara a ser el estado final y  permanecerá permanecerá solo como estado inicial. Se debe crear una transición  que tendrá como símbolo 5.  APLICACIÓN: Creamos un nuevo estado  y ponemos una transición que vaya de  a  con el símbolo .

ILUSTRACIÓN ILUSTRACIÓN 7: PASO A1

5

 =

11

Una vez hecha la separación de los estados podemos proseguir con los pasos 1-4. Como podemos ver, cada transición de nuestro DFA tiene un símbolo único que le permite ser transitada, por lo tanto el paso 1 nos generará en mismo DFA de la ilustración 7. Aplicamos el paso 2 para poner todas las transiciones que nos hacen falta. Con esto obtenemos:

ILUSTRACIÓN 8: PASO 2

Esta es la tabla con las expresiones regulares regulares ya simplificadas que nos resulta después de haber hecho el paso tres para el estado : 



0

0

0

2

0

3

2

0

2

2

2

3

3

0

3

2

3

3

 0+01 11  1+00 01 ∅ ∅ ∅ ∅

12

A continuación el DFA que nos resulta al haber eliminado  :

ILUSTRACIÓN 9: PASO 3

Hacemos lo mismo para  , con esto tendremos solo estados iniciales y finales fi nales en nuestro DFA. La tabla de transiciones es:





 

0

0

0 + 1 0 + 1 101∗1 + 00 00

0

3



3

0

3

3

Ø Ø

Al aplicar el paso tres a todos los estados no iniciales y no finales, obtenemos el siguiente DFA:

ILUSTRACIÓN ILUSTRACIÓN 10: PASO 3

13

PASO A2: Si existe un estado  inicial y  final talque hay una transición  entre estos estados, se deberá hacer una concatenación de las cerradura Kleene de las Expresiones Regulares que tienen la transición que hace bucle en  , la transición que va de  a  y la transición que hace bucle en  . A este conjunto se le aplicará la cerradura Kleeme y se le concatenará la cerradura Kleene de la transición que hace bucle en  y la transición que hace bucle en .  APLICACIÓN: Al hacer la concatenación de las cerraduras Kleene de el bucle en , el bucle en  y la transición que va de  a  nos queda le Expresión Regular: ∗





∗ ∗

 0 + 1 0 + 1 1 101 01∗ 1 + 00 0∗ Ø Ø

Ahora le aplicamos la cerradura Kleene a este conjunto: 0 + 10 + 1101 01∗ 1 + 00 0∗ Ø Ø 

Proseguimos a concatenarlo con el bucle en  y en  : ∗

∗ ∗



0 + 10 + 1101 01∗ 1 + 00 00∗ Ø Ø   0 + 1 0 + 1 1 101 01∗ 1 + 00∗ ∗ Ø

Al simplificar esta Expresion Regular nos queda:  +  +   ∗  +  ∗

14

EJEMPLO #3

Ahora haremos un nuevo ejercicio para reforzar los métodos aprendidos anteriormente. El siguiente DFA acepta cadena con un número par de 0´s y de 1´s:

ILUSTRACIÓN 11: DFA ORIGINAL

Creamos un nuevo nodo final  con la transición  que va desde  hasta  , nos resulta en:

ILUSTRACIÓN 12: PASO A1

15

Agregamos todas las transiciones ∅ para conectar cada estado con el resto de estados del DFA:

ILUSTRACIÓN ILUSTRACIÓN 13: PASO 2

Ahora eliminaremos el estado . Presentamos a continuación la tabla de transiciones y el DFA sin el estado : 



0

0

0

2

0

3

0

4

2

0

2

2

2

3

2

4

3

0

3

2

3

3

3

4

4

0

4

2

4

3

  00 1 01  1 ∅ 0 ∅ 10 0 11 ∅ ∅ ∅ ∅

16

ILUSTRACIÓN ILUSTRACIÓN 14: PASO 3

Ahora eliminaremos el estado . Presentamos a continuación la tabla de transiciones y el DFA sin el estado : 



0

0

0

2

0

4

2

0

2

2

2

4

4

0

4

2

4

4

 00 + 011 0111 1 ∗ 10 1 + 0111 ∗ 0  1 + 011 ∗ 10 011 11 ∗ 0 ∅ ∅ ∅ ∅

ILUSTRACIÓN ILUSTRACIÓN 15: PASO 3

17

Ahora eliminaremos el estado . Presentamos a continuación la tabla de transiciones y el DFA sin el estado : 



0

0

0

4

4

0

4

4

  00 + 0111 ∗ 10 + 1 + 0111 ∗ 0011 ∗ 0 ∗ 1 + 011 ∗ 10  ∅ ∅

ILUSTRACIÓN ILUSTRACIÓN 16: PASO 3

Y para finalizar, generamos la Expresión regular final. La Expresión Regular ya simplificada es:  +  ∗   +   +    ∗   ∗ ∗   +   ∗ ∗

18

View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF