Gramatica y Automatas

November 6, 2020 | Author: Anonymous | Category: N/A
Share Embed Donate


Short Description

Download Gramatica y Automatas...

Description

GRAMATICA ALFABETO Conjunto no vacío y finito de elementos, distintos entre sí e identificados, por ejemplo: números, letras, combinaciones entre ellos. Simbología: Ejemplo: sea

=

y

“2 es un símbolo del alfabeto” se denota: 2 Otros ejemplos:

.

= =

, el alfabeto de letras mayúsculas.

=

, el alfabeto binario

Operaciones con Alfabetos Los Alfabetos, en su condición de conjuntos, pueden ser sometidos a las operaciones clásicas de la Teoría de Conjuntos, es decir Unión, Intersección, Diferencia y Complementación de Conjuntos. Las propiedades más importantes de dichas operaciones son: Si

=

Si

=

(

) =

(

)

(

) =

(

)

(

) =

(

)

(

)

(

) =

(

)

(

)

=

y

=

Potencia de un alfabeto Si es un alfabeto, es posible expresar el conjunto de todas las cadenas de cierta longitud de dicho alfabeto utilizando una notación exponencial. Definimos como . Como el conjunto de cadenas de longitud k, tales que todos los símbolos que las forman pertenecen a Ejemplo:

. Si

=

, entonces

=

;

=

;

= Nótese además que independiente, de cual sea el alfabeto siempre única cadena cuya longitud es 0.

=

Otra cuestión que se presta a confusión es la diferencia que existe entre

, siendo

=

,y

la

=

, donde la primera es un alfabeto con símbolos cero y uno y el segundo es un conjunto de cadenas de longitud unitaria. PALABRA Se llama Palabra, Cadena o Tira a la concatenación o secuencia finita de elementos de un alfabeto. Simbología: Las palabras se denotan con las últimas letras del alfabeto en minúscula (x = “001” , y = “ai”) Ejemplo:

Longitud de una palabra. Cada palabra tiene su longitud, es decir, el número o la cantidad de elementos que la componen. Simbología: Ejemplo:

(se utilizan dos barras a los costados de la palabra) sean las palabras: x = “001”, y = “ai”, z = “ZXABK” =3

=2

=5

La longitud de una palabra o cadena puede asumir distintos valores, si la longitud es igual a 1, la palabra es igual al elemento o símbolo del alfabeto, es decir, que cada elemento o símbolo de un alfabeto puede ser una tira o cadena del mismo. Ejemplo:

“0” “A”

Palabra Vacía. Si la longitud de una palabra es igual a 0, estamos frente a una palabra que existe pero que no contiene elementos, llamada “palabra vacía” y es una cadena sobre cualquier alfabeto. Simbología: Subpalabras: Prefijo y Sufijo.

=0

Se denota Sufijo a la subcadena de una palabra dada formada por los primeros símbolos de la misma y Prefijo a la subcadena formada por los últimos símbolos de dicha palabra, es decir, sea v una cadena sobre una alfabeto, se llama Sufijo a la subcadena x y Prefijo a la subcadena y de v, tal que v = xy Ejemplo:

v = “aeiou”

=3

x = “aei” =2

x = “ou”

Universo de discurso Se llama Universo de Discurso o Lenguaje Universal al conjunto de todas las cadenas, tiras o palabras que se pueden formar con los elementos o símbolos de un alfabeto, incluida la palabra vacía. Simbología: El es una conjunto infinito ya que son infinitas las palabras o cadenas que puedo formar con los símbolos de un alfabeto ya que éstos no son vacíos. Ejemplo:

Operaciones palabras Concatenación La Concatenación de dos palabras (s, t) da origen a una nueva palabra (r) formada por los elementos o símbolos de la primera palabra seguidos los símbolos de la segunda, es decir, r = s t Ejemplo: siendo las palabras: s = “abc” r=s

t = “defg”

t = “abcdefg”

Simbología: la concatenación se indica con un punto entre las palabras a concatenar. La concatenación se puede realizar entre la palabra vacía y cualquier palabra, teniendo como resultado la misma palabra sin ser modificada. Ejemplo:

s

=

s=s

Propiedades de la operación Concatenación: Propiedad Conmutativa: ésta propiedad no se cumple para esta operación: s

t¹t

s

Operación Cerrada: la concatenación de dos palabras que pertenecen a también una palabra de

es

.

Propiedad Asociativa: (r

s)

t=r

(s

t)

Potenciación Se llama Potencia de una palabra v a la nueva palabra z que se obtiene de haber concatenado v consigo misma tantas veces como indica el exponente: = v. v. v. v. v. v. ... n

Ejemplo:

sea v = “011” Z=

= v = “011”

Z=

=v

v = “011011”

Z=

=v

v

v = “011011011”

Toda potencia 0 de una palabra, por definición, es la palabra vacía: Reflexión La Reflexión o refleja de una palabra o cadena x, se forma invirtiendo el orden de los símbolos o elementos de la misma. Ejemplo:

x = “abc” = “cba”

EJERCICIOS RESUELTOS ALFABETO

Resolución:

EJERCICOS RESUELTOS LENGUAJES Ejercicio 1: Efectúe la potencia correspondiente para los siguientes casos:

Resolución:

Ejercicio 2:

1-

L1 es un lenguaje sobre el alfabeto A

2-

L1 es un lenguaje sobre el alfabeto B

3-

L2 es un lenguaje sobre el alfabeto A

B

4-

L2 es un lenguaje sobre el alfabeto A

B

5-

L3 es un lenguaje sobre el alfabeto A

B

6-

L3 es un lenguaje sobre el alfabeto A

B

7-

L1

L2 es un lenguaje sobre el alfabeto A

8-

L1

L2 es un lenguaje sobre el alfabeto A

B

9-

L1

L2 es un lenguaje sobre el alfabeto A

B

10- L1

L2 es un lenguaje sobre el alfabeto B

Resolución:

EJERCICIOS RESUELTOS CADENAS

Ejercicio 1: Dadas las cadenas: x = “abc”,

y = “aba”; realizar las siguientes operaciones:

Resolución:

Ejercicio 2: Dadas las cadenas: x1 = “in”, x2 = “forma”, x3 = “ción”; indicar si las siguientes igualdades se cumplen:

Resolución:

a)

no hay igualdad.

b)

no hay igualdad.

c)

hay igualdad.

EJERCICIOS RESUELTOS GRAMATICA

Ejercicio 1: Identificar en el Ejercicio 2 de Derivaciones (punto anterior) la clasificación de Chomsky que le corresponde a cada uno de los conjuntos de producciones dadas. Resolución: 1-

TIPO 3

2-

TIPO 2

3-

TIPO 2

4-

TIPO 2

5-

TIPO 2

6-

TIPO 2

7-

TIPO 2

Ejercicio 2: Dada la siguiente Gramática:

Indique si las siguientes cadenas pueden ser generadas o no por esta gramática (demostrarlo mediante la derivación), en caso afirmativo, determine su árbol de derivación. Para ello, considere las siguientes cadenas: x = “abbaaab”, y = “baabbaaaabb”, z= “baabab”, p = “abbaab” Resolución: -

x no puede ser generada por la gramática.

-

y no puede ser generada por la gramática.

-

z si puede ser generada por la gramática.

-

p si puede ser generada por la gramática.

1-

equivalentes

2-

ambiguas

3-

recursivas

indicando lo que sucede en cada una de las siguientes producciones (demostrarlo):

Resolución: a)

Recursiva directa por izquierda (S:= aSA)

b)

Recursiva directa (B:= aBb)

c)

Recursiva directa por derecha (A:= aA, B:= AB) y ambigua

d)

Recursiva directa (B:= bBa)

e)

Recursiva directa por derecha (A:= aA) y ambigua

NINGUNA ES EQUIVALENTE Ejercicio 4: Determine la definición algebraica y los árboles de derivación correspondiente, considerando las siguientes reglas gramaticales:

Resolución: P1: “hay recursividad”

P2: “hay recursividad”

P3: “hay recursividad”

Ejercicio 5: Considerando como cuyo axioma es S = S, establecer si las reglas de producción dadas a continuación, corresponden a gramáticas equivalentes. Justifique su respuesta, (demostrarlo):

Resolución: Caso 1: P1 y P2 no son equivalentes. Caso 2: P1 y P2 no son equivalentes.

EJERCICIOS RESUELTOS GARMATICA BIEN FORMADA

Para cada una de las siguientes gramáticas, generar la gramática bien formada correspondiente, es decir, eliminando Reglas no Generativas y Reglas de Redenominacion. Ejercicio 1:

Resolución: Primero debemos limpiar la gramática

Reglas innecesarias:

(P:= P)

Símbolos inaccesibles: (P:= aM / zN) Símbolos superfluos no terminales: no hay Símbolos superfluos terminales: no hay

Eliminación de Reglas no Generativas:

Ejercicio 2:

Resolución: Primero debemos limpiar la gramática: Reglas innecesarias:

(B:= B)

Símbolos inaccesibles: no hay Símbolos superfluos no terminales: no hay Símbolos superfluos terminales: (z)

Eliminación de Reglas no Generativas:

Reglas de Redenominación:

Ejercicio 3:

Resolución: Primero debemos limpiar la gramática: Reglas innecesarias:

(B:= B)

Símbolos inaccesibles: (D:= a) / (C:= aC) Símbolos superfluos no terminales: no hay Símbolos superfluos terminales: (c, d)

Reglas de Redenominación: no hay

“Recuerde que para que una gramática se encuentre bien formada, primero debe estar limpia”

EJERCICIOS RESUELTOS GRAMATICA LIMPIA

Limpiar las siguientes gramáticas, determinando: a)

reglas innecesarias

b)

símbolos inaccesibles

c)

símbolos superfluos terminales y no terminales

d)

definir la gramática limpia

Ejercicio 1:

Resolución: a)

B:= B

b)

No hay

c)

No terminales: no hay, Terminales: 3

Ejercicio 2:

Resolución: a)

A:= A

b)

C:= 1C

c)

No hay (ni terminales, ni no terminales)

Ejercicio 3:

Resolución: a)

S:= S

b)

No hay

c)

No terminales: S:= 0C / B:= 1C / C:= 0C Terminales: no hay

Ejercicio 4:

Resolución: a)

A:= A / B:= B

b)

No hay

c)

No terminales: A:= Cc / C:= Cc, terminales: no hay

Ejercicio 5:

Resolución: a)

B:= B / C:= C

b)

No hay

c)

No hay (ni no terminales, ni terminales)

EJERCICICOS RESUELTOS DERIVACIONES Ejercicio 1: A partir de las producciones siguientes:

Se pide que realice, para cada uno de los conjuntos, lo siguiente: 1-

generar 4 cadenas, aplicando las producciones mediante el proceso de derivación.

2-

establecer la forma algebraica del lenguaje que conforman las cadenas encontradas.

3-

determinar los componentes formales de la gramática.

Resolución:

Ejercicio 2: Por cada grupo de producciones, realizar todas las derivaciones posibles: 1) S:= aB / bA A:= aB / a B:=b 2) S:= aA A:= bC C:= ca /c 3) S:= caBA A:= aC / b B:= bA / a C:= ab / c 4) S:= BAa A:= Ca / a B:= Ab / c C:= ab 5) S:= bAB / c A:= aC C:= bD

B:= aD D:= b 6) S:= aaA A:= aa/ aaB /cB B:= b / bC C::= c 7) S:= abABC A:= a / b B:= b / a C:= a / b Resolución: P1 =

ab, ba, bab

P2 =

abca, abc

P3 = cabacb, cabaabb, cabbb, caab, cabaabac, cabacac, cabbac, caaac, caaaab, cabaaab, cabacaab, cabaabaab P4 =

ababa, abababa, ababaa, abaa, caa

P5 =

c, babbab

P6 =

aaaa, aaaab, aaaabc, aacb, aacbc

P7 =

ababa, abbba, abaaa, abbaa, abaab, bbaab, abbab, ababb, abbbb

EJERCICIOS RESULETOS FORMA NORMAL DE GREIBUCH

A las siguientes gramáticas llevarlas a la Forma Normal de Greibach, de acuerdo a los siguientes pasos: a)

limpiar la gramática

b)

eliminar recursividad por izquierda

c)

llevar a la F.N.G.

Ejercicio 1:

Resolución: a) gramática limpia b) Regla1:

C:= C1

X:= 1 / 1X C:= 0 / 0X

c) grupo 3: B:= A1

B:= CB1 (grupo 2) B:= 21

Grupo 2: B:= CB1

B:= 2Y para Y:= 1

B:= 0B1

B:= 0BY para Y:= 1

B:= 0XB1 A:= CB

B:= 0XBY para Y:= 1

A:= 0B A:= 0XB

Ejercicio 2:

Resolución: a) gramática limpia b) Regla1:

B:= B0

X:= 0 / 0X B:= 0 / 0X / 1 / 1X

c) grupo 3: no hay Grupo 2: A:= B0

A:= 0X0 A:= 00

A:= 0XY para Y:= 0 A:= 0Y

A:= 10

A:= 1Y

A:= 1X0

A:= 1XY

S:= 0A1

S:= 0AZ para Z:= 1

A:= 0A1

A:= 0AZ

Ejercicio 3:

Resolución: a) gramática limpia b)

no hay

c) grupo 3:

B:= A0

grupo 2: S:= A0

B:= 0A0

B:= 0AY para Y:= 0

B:= 10

B:= 1Y para Y:= 0

S:= 0A0

S:= 0AY para Y:=0

S:= 10 B:= 1B0

S:= 1Y para Y:= 0 B:= 1BY para Y:= 0

Ejercicio 4:

Resolución: a) gramática limpia b)no hay c) grupo 3: no hay

Grupo 2: S:= BC

S:= 0BC S:= 0C S:= 1C

S:= CB

S:= 0CB S:= 0B

S:= 0C1

S:= 0CX para X:= 1

EJERCICOS RESUELTOS DE FORMA NORMAL DE CHOMSKY

A las cuatro gramáticas obtenidas de los ejercicios de Gramática Limpia, llevarlas a la F.N.C. y derivar dos palabras con la gramática anterior y después de haber aplicado la F.N.C. Resolución Ejercicio 1: a) X:= 0 A:= 0B

A:= XB

B:= 0A

B:= XA

F.N.C.:

G1 = ({ 0, 1, 2 }, { A, B, X }, A, P1 ) P1 = { (A:= XB / 2), (B:= XA / 1), (X:= 0) }

b) Antes:

A A

Después:

0B

XB 2

Resolución Ejercicio 2: a) X:= 0 Z:= 1 Y:= A1

002

2

A A

00A

Y:= AZ

0B

0XA

00A

002

a)

S:= 0A1

S:= XY

A:= 0A1

A:= XY

A:= 0B

A:= XB

B:= 0B

B:= XB

Antes:

Después:

S

0A1

00B1

S

0A1

001

S

XY

S

XY

0Y 0Y

0001

0AZ

0XBZ

00BZ

0AZ

00Z

001

aBZ

abZ

abc

Resolución Ejercicio 3: a) X:= 0 Y:= 1 S:= 0A

S:= XA

S:= 1B

S:= YB

A:= 0A

A:= XA

A:= 1S

A:= YS

B:= 1BB

B:= ZB

Z:= 1B

Z:= YB

B:= 0S

B:= XS

b) Antes:

S:= aBc S:= aAc

Después:

S:= AY S:= AW

abc aac aY aAC

aaZ

aac

000Z

0001

Resolución Ejercicio 5: a) X:= 0 Z:= 1 S:= 0C1 Y:= C1 B:= OB1 W:= B1 C:= 0C1

S:= XY Y:= CZ B:= XW W:= BZ C:= XY

PRACTICAS LENGUAJES

Ejercicio 6: Determine si las cadenas x, y , z, pertenecen a algunos de los lenguajes L1, L2,

L3. Ejercicio 7: Determine la clausura o cierre, y la clausura positiva de los alfabetos y lenguajes descriptos anteriormente. Ejercicio 8: La Municipalidad de Córdoba desea construir un sistema que sea capaz de determinar la secuencia de símbolos que forma la patente de un automóvil. Se pide diseñar el lenguaje que servirá de base para dicho sistema. Ejercicio 9: Continuando con el ejercicio anterior, también se desea obtener un sistema que determine el nº de documento del propietario de la patente, como así también, su nombre completo, teniendo en cuenta dos nombres y dos apellidos.

CADENAS

DETERMINE: Ejercicio1: Determine la longitud de las cadenas

.

Ejercicio 2: Determine todas las subcadenas prefijas de cada palabra dada y su longitud. Ejercicio 3: Determine todas las subcadenas sufijas de cada palabra dada y su longitud. Ejercicio 4: Realice las siguientes operaciones:

GRAMATICA BIEN FORMADA

Para cada una de las siguientes gramáticas, generar la gramática bien formada correspondiente, es decir, eliminando Reglas no Generativas y Reglas de Redenominación.

“Recuerde que para que una gramática se encuentre Bien Formada, primero debe estar limpia”

GRAMATICA LIMPIA

Limpiar las siguientes gramáticas, determinando: a)

reglas innecesarias

b)

símbolos inaccesibles

c)

símbolos superfluos terminales y no terminales

d)

definir la gramática limpia

DERIVACIONES

Ejercicio 1: Obtener todas las derivaciones posibles de las siguientes producciones y determine el Lenguaje que genera cada uno:

Ejercicio 2: Elabore todas las frases que pueden ser generadas por la siguiente Gramática, mediante árboles sintácticos:

Ejercicio 3: Muestre la derivación de las cadenas: “- 010”, “+111”, “-10101”, “+ 0001”

(Para resolver este ejercicio debe aplicar RECURSIVIDAD las veces que sea necesario para llegar al resultado.) Ejercicio 4: Considerando las siguientes reglas de producción, determine las derivaciones por izquierda y por derecha de la misma. Defina algebraicamente el lenguaje que genera:

FORMA NORMAL DE CHOMSKY

A las cuatro gramáticas obtenidas de los ejercicios de Gramática Limpia, llevarlas a la F.N.C. y derivar dos palabras con la gramática anterior y después de haber aplicado la F.N.C.

AUTOMATAS Y MAQUINAS INTRODUCCION Las Máquinas de estados o Autómatas, son también denominadas máquinas teóricas o máquinas abstractas, éstas son dispositivos teóricos capaces de recibir y transmitir información. Para poder realizar esta tarea, manipulan cadenas de símbolos que se le presentan como entrada, produciendo como salida otra tira o cadena de símbolos. Para poder realizar esta tarea y determinar cuando corresponde producir un determinado símbolo de salida, lo realiza a través de un conjunto de estados finitos, en los cuales se puede encontrar la máquina en un determinado intervalo de tiempo discreto, y este estado contendrá la información de la salida a producir dependiendo del símbolo de entrada Como se mencionó en el párrafo anterior, la conducta de la máquina está gobernada por el “estado” en que se encuentre, y que ante una determinada entrada producida desde el exterior, la máquina podrá cambiar de estado y eventualmente producir una salida determinada.

Los orígenes de estos autómatas y el desarrollo posterior de las variantes tienen motivaciones diferentes, ya que se puede concluir que la Teoría de Autómatas proviene del campo de la Ingeniería Eléctrica, en donde principalmente los trabajos desarrollados por Shannon, demostraban la aplicación de la lógica matemática a los circuitos combinatorios y secuenciales. A posteriori, estos trabajos más los esfuerzos realizados por Church, Minsky, y otros , mas el postulado presentado por Alan Turing que dio origen a la máquina que lleva su nombre, culminaron con la formulación teórica de la Teoría de Autómatas. Se debe a Moore la presentación del primer tratado riguroso sobre autómatas, y recién en la década del 50 se comenzó a ver la utilidad de los autómatas con los lenguajes y las gramáticas CLASIFICACION DE LAS MAQUINAS ABSTRACTAS Es posible encontrar una gran variedad de clasificaciones de máquinas de estados, en nuestro caso y desde la perspectiva de la teoría de la computación, presentaremos un esquema evolutivo, en donde cada nueva máquina presentada de acuerdo a las limitaciones impuestas genera una familia o conjunto en donde cada nueva definición ampliará las potencialidad de las anteriores. Cada nueva máquina puede ser definida a partir de la definición de la anterior en donde se le levantará alguna restricción o se le proveerá de alguna capacidad adicional.

. Esta primer división entre Máquinas Secuenciales y Máquinas de Estados, se debe a que las primeras no poseen estado inicial ni estados de finalización previstos, mientras que las Máquinas de Estados, a diferencia de las anteriores tienen un estado inicial que es por donde comenzará a aplicarse la secuencia de transiciones en su ejecución y un conjunto de estados de finalización.

OTRAS CLASIFICACIONES

Es posible encontrar otros tipos de clasificaciones para el conjunto de máquinas abstractas, una de ellas pueden clasificarse en máquinas traductoras y máquinas reconocedores. Entre las máquinas traductoras encontramos a las máquinas secuenciales ya que éstas producirán una salida, que se corresponderá con la entrada desde el exterior. Con respecto a las máquinas reconocedoras, estas son las que a diferencia de las anteriores, solo de dedican a aceptar o no aceptar cadenas recibidas desde el exterior. Otra clasificación posible, estará en función a como serán las transiciones entre estados, las cuales pueden plantearse de dos maneras posibles: Deterministas y no Deterministas. Las transiciones deterministas son aquellas que al encontrarse la máquina en un determinado estado y ante una entrada tendrá la posibilidad de transitar a uno y solo uno de los estados posibles. Por otro lado las no deterministas, serán aquellas que a diferencia de las anteriores tendrán la posibilidad de transitar a mas de un estado, o más aún también se podrá presentar cuando estando la máquina en un determinado estado tenga la posibilidad de transitar a un nuevo estado sin haber recibido una entrada (este tipo de transición de la denominará Transiciones

)

CARACTERÍSTICAS COMUNES A TODAS LAS MÁQUINAS ABSTRACTAS

A continuación se presentarán un conjunto de definiciones, y partes componentes que se utilizarán para definir al conjunto de máquinas. Definiciones de propiedades comunes En este apartado, se intenta realizar una aproximación al comportamiento general común a todas las máquinas, el cuál lo reflejan las definiciones siguientes:



Tiempo discreto: en esencia significa que el tiempo avanza en unidades de tiempo considerados como intervalos de tiempo discretos, y que en cada uno de estos intervalos las máquinas se encontrarán en una configuración determinada, y realizan una acción determinada.



Conjunto finito de estados: En un determinado intervalo de tiempo la máquina sólo se puede encontrar en uno y solo uno de los posibles estados.

 

Cinta de entrada: La información que se recibe desde el exterior será por medio de una cinta de entrada, los símbolos que pueden estar contenidos en esta cinta, pertenecen al Alfabeto de Entrada.





Alfabeto de Entrada: Los estímulos que la máquina recibe desde el exterior, pertenecen a un determinado conjunto denominado Alfabeto de Entrada.

Intencionalidad de la máquina: La funcionalidad para el cuál tiene propósito la máquina esta dada por su función de transición, que tiene como misión fundamental, dependiendo de la máquina, cual es el próximo estado al que debe pasar la máquina, dependiendo de estado actual y el estímulo (entrada) que recibe.

Información hacia el exterior: En el caso que se tratase de una máquina traductora, devuelve información hacia el exterior, dependiendo de la máquina que se trate, tendrá una cinta especial en donde grabará la información de salida o tendrá la

capacidad de regrabar la cinta única. Elementos constitutivos de las máquinas abstractas A continuación se provee de la simbología y el significado que tendrá cada uno de los componentes que serán utilizados en la descripción de las máquinas.

Símbolo Significado

Alfabeto de Entrada: Está presente en todas las máquinas

Q

Conjunto finito de Estados: Presente en todas las máquinas

f

Función de transición: Está presente en todas las máquinas, pero dependiendo de la máquina en cuestión variará su definición

Alfabeto de Salida: Solo estará presente en las máquinas traductoras:

Alfabeto de Cinta: Solo para el caso que la máquina sea traductora y tenga una sola cinta para entrada y salida. En este caso estará incluido en

A

Alfabeto de Pila: En el caso de que la máquina necesite una estructura de datos adicional, esta se comportará como estructura de pila y A representa el alfabeto de símbolos que se podrá grabar en ella.

q0

Estado Inicial: Para el caso de las máquinas de estados, este será un estado particular en que se encontrará la máquina en el comienzo de su ejecución. Con q0 Perteneciente al conjunto Q.

F

Conjunto de estados finales de aceptación: Este será un subconjunto del conjunto de estados Q por los cuales puede transitar la máquina. Al detenerse la máquina.

a0

Símbolo inicial de Pila: En el caso de utilización de memoria de pila, este será un símbolo perteneciente al alfabeto de pila con el que se marcara el tope o cima de la pila.

G

Función de Salida: En el caso de tratarse de una máquina secuencial, esta necesita por ser traductora un función especial que indique cuál es la salida que debe producir en un intervalo de tiempo determinado.

Definición y Representación Cada una de las máquinas en lo que se refiere a su descripción, necesitará una enunciación formal de todos sus componentes, y además deberá describir la función de transición en todas las máquinas y adicionalmente la función de salida en el caso que se tratase de una máquina traductora secuencial. Representaciones de la función de Transición Básicamente existen tres formas de describir el funcionamiento de una máquina abstracta, y esta se puede realizar por medio de la declaración explícita de la función de transición, por medio de una tabla de doble entrada en donde básicamente se representará el estado actual en que se encuentra la máquina, las entradas a producirse y el estado al cuál transitará, y por medio de un Grafo dirigido. Cada una de las representaciones respectivas serán equivalentes en cuanto a su definición, pero tendrán distinto grado de aceptación en cuanto su utilización. Tabla de doble entrada Básicamente esta forma de describir la función de transición permite una representación que facilita hacer el seguimiento de la máquina a través de los sucesivos intervalos de tiempo por los cuales la máquina transitará e ira cambiando de estados en función a las sucesivas entradas que se produzcan. La tabla, tendrá como mínimo la estructura que presentamos a continuación para todas las máquinas, pero diferirá de acuerdo a la máquina que se refiera, en la información que contendrá en la intersección de las filas y columnas. En las columnas se representarán las posibles entradas de acuerdo al alfabeto de entrada, mientras que el las filas se describirán los posibles estados de acuerdo al alfabeto de estados.

Detalle explícito función de transición Esta forma de representar a la función de transición, si bien es efectiva es la que menos interés despierta ya que no facilita el seguimiento de máquina abstracta en su ejecución. Como ejemplo de define:

En donde cada uno de los símbolos significa: pi

f Función de Transición Estado en el que se encuentra la máquina en un determinado tiempo i ei Entrada a producirse en el tiempo i qi+1 Estado que se encontrará en tiempo i+1 Grafo Dirijido

Este es la forma de representación mas expresiva, ya que al tratarse de una representación gráfica, facilita no solo evidenciar sus partes componentes y su función de transición, si no que permite hacer un seguimiento de la máquina abstracta en ejecución. Las partes constitutivas del grafo serán las siguientes:



Estados: Se representarán por medios de Nodos, los cuales se rotularán con el nombre del estado que represente



Transiciones: Se representarán mediante arcos dirigidos, en donde el nodo donde arranca el arco representa el estado actual, el nodo a donde apunta el arco es el estado al cuál transitará y el rótulo del arco nos indica la entrada que producirá tal transición o cambio de estado.



Estado Inicial: Se representará mediante un nodo apuntado por una flecha



Estado Final: Es el estado que pertenece al subconjunto F, de estados finales de aceptación y se representará mediante un nodo con doble circulo.

MÁQUINAS SECUENCIALES

Estas máquinas, son en esencia máquinas traductoras, ya que dada una palabra en la entrada generan otra palabra en la salida. Por lo expuesto en el párrafo anterior, para poder producir la correspondiente transformación estas máquinas deberán estar compuestas por: • Dos cintas asociadas, una que permita alojar una cadena de símbolos a la entrada, que serán leídos uno por vez, y otra cinta que permita registrar las salidas que se irán produciendo en la ejecución de la máquina. • Deberán contener un conjunto finito de estados, los que son capaces de memorizar, en cada momento la parte de la palabra de entrada leída en ese instante de tiempo, cambiar de estado y producir una salida. Es importante resaltar que en un determinado intervalo de tiempo, las máquinas secuenciales realizarán tres acciones que serán indivisibles (consideradas como una unidad), las cuales son:

1.

Realizan una lectura sobre la cinta de entrada.

2. 3.

Cambiar de estado.

Grabar un símbolo en la cinta de salida

Otro característica importante a destacar sobre este tipo de máquinas, es que no disponen de un estado inicial previsto, por lo tanto en el momento de comenzar su funcionamiento podrán hacerlo desde cualquiera de sus estados, produciendo eventualmente salidas diferentes. 2.5.1. Máquina de Mealy (ME) Esta máquina la simbolizaremos con ME, y quedará formalmente definida mediante una quíntupla como sigue: ME = {

,

, Q, f, g}

Conjunto de símbolos de entrada Conjunto de símbolos de salida Q

Conjunto finito de estados

f

Función de transición de estados definida como

g

Función de salida definida como

Interpretación La máquina de Mealy permanece en un cierto estado mientras no recibe ningún estímulo del exterior. Cuando recibe un símbolo del exterior (Perteneciente al conjunto de símbolos de

entrada) realiza otras dos acciones en forma simultánea: 12-

Transita a otro estado (que puede ser el mismo en el que está pero igual se produce el transito) . De acuerdo con la función de transición f Emite un símbolo a la salida (símbolo que pertenece al conjunto de símbolos de salida). de acuerdo con la función de salida

Estas tres acciones: lectura de un símbolo desde exterior (cinta de Entrada), Transición de estado, y Grabado (Cinta de Salida), serán indivisibles dentro de un intervalo de tiempo. De esta manera al transitar desde un intervalo de tiempo discreto i hasta i+1 la máquina realizará: Acción

Significado

Estando en el intervalo de tiempo i en el estado q i y recibiendo desde la cinta q i+1 = de entrada e i, la máquina transita al estado q i+1 f( qi, ei)

Que la salida producida en el intervalo de tiempo i estará solo en función del Si = estado en que se encuentra en ese tiempo i, y la salida que producirá será la f( qi, ei) correspondiente al símbolo del estado que este después de realizar la transición.

Si analizamos esta máquina en relación a la máquina de Mealy, notamos que la diferencia que existe entre ambas radica solo en como se comporta la función de salida q Ejemplo: Describiremos una máquina de Moore, que resuelve el mismo ejercicio resuelto por la Máquina de Mealy anterior. La máquina nos queda: MO = ({0,1}, {p,i}, {q0,q1}, f, g) Descripción explícita de la funciones f y g

Tablas de doble entrada:

Función Transición f

Grafo:

Resultado de ejecución De igual manera que en el ejemplo de Mealy probaremos el funcionamiento de la máquina de Moore sobre las mismas cadenas: a)

Que salida le corresponderá a una entrada 1 = 0100 , comenzando la ejecución de la máquina por el estado q0. La salida producida para la entrada 1, será : piii b) Que salida le corresponderá a una entrada 2 = 1011100 , comenzando la ejecución de la máquina por el estado q0. La salida producida para la entrada 2, será : iipippp 2.5.3. Comparación de representación entre Máquinas Mealy y Moore

Con respecto a la ejecución de ambas máquinas de acuerdo a los ejemplos anteriormente resueltos, notamos que para las mismas cadenas de entrada, y comenzando por el mismo estado, se obtendrán las mismas salidas. Las diferencias que se observan, con respecto a las diferentes formas de representación entre las máquinas radican fundamentalmente en las diferencias que tienen ambas máquinas en la constitución de la función de salida g. Ahora si analizamos las diferentes formas de representación de las funciones f y g notamos lo siguiente: Con respecto a la notación explícita, vemos que lo que cambia es la definición de la función g ya que en Moore la salida dependerá solamente del estado al que transitará la máquina. Con respecto a las tablas, notamos que en Moore en el caso de la representación de la función g, dejará de ser una matriz como es en el caso de Mealy para convertirse en un vector.

Con respecto al grafo, los cambios que se producirán son en la rotulación de las transiciones, ya que en Moore solamente se deberá indicar que entrada produce la transición de estado, y en la rotulación del estado ahora se deberá indicar también cuál es la salida que producirá. 2.5.4. Equivalencia entre Máquinas de Mealy y Máquina de Moore Las funciones de salidas de ambas máquinas se representan como sigue: MEALY

g:Qx

MOORE

g:Q

Por lo tanto las salidas correspondientes en un determinado tiempo i se obtendrán de la siguiente manera:

MEALY

Si = Que la salida producida en el intervalo de tiempo i estará en función del f( qi, ei) estado en que se encuentra y la entrada que recibe en el mismo tiempo i

Que la salida producida en el intervalo de tiempo i estará solo en función Si = f( del estado en que se encuentra en ese tiempo i, y la salida que se MOORE qi ) producirá será la correspondiente al símbolo del estado que este después de realizar la transición Básicamente la diferencia entre ambas máquinas está dada en la respuesta que producen ambas máquinas secuenciales. En la máquina de Mealy se dice que la respuesta es inmediata ya que la salida la produce en forma directa después de recibir la entrada. Mientras que en la máquina de Moore, la respuesta solo depende del estado en que se encontrará la máquina después de realizar cada transición. De acuerdo a lo expresado anteriormente, se puede demostrar que la salida en una máquina de Moore, experimenta un retardo de tiempo respecto de su entrada. Esta apreciación es razonable, ya que la respuesta depende solo del estado al que transitará la máquina pero esta transición se deberá a la entrada anterior que dio origen al estado en el cuál se encuentra la máquina. En Moore: En un determinado intervalo de tiempo i la máquina se encuentra en un determinado estado qi, y recibe un símbolo ei y se producirá una transición de estado y una salida como sigue: f ( qi , ei ) = q i+1 g ( qi ) = si pero para haber estado en el estado qi que produjo la salida si debió en un intervalo de tiempo anterior haber recibido una entrada que lo llevo a este estado. f ( qi-1 , ei-1 ) = q i g ( qi ) = g (f ( qi-1 , ei-1 )) = si En donde se evidencia que la salida si en la máquina de Moore en un intervalo i depende en forma directa de la entrada ei-1 2.5.5. Conversión de Máquinas Secuenciales

Toda máquina de Mealy se puede transformar en una máquina de Moore y viceversa. Los procedimientos serán los que siguen. 2.5.5.1. De Mealy a Moore: Dada la Máquina de Mealy: ME = {

,

, Q, f, g}

M0 = {

,

Construiremos La Máquina de Moore

, Q´, f´, g´} de la siguiente manera.

En donde por cada combinación de estado/entrada : f(q,a)=p ( con q,p Q ; a

g(q,a)=b Se 1) Un estado: función salida:

pb

)

crea: Q´ , al que le corresponderá la siguiente

g´(pb) = b

y

Una transición: f´( qs , a ) = pb , para cada estado qs , s

2)

Si a un determinado estado q etiquetado con q

;b

Q no llegase ninguna transición, se creará un nodo

. Ejemplo:

Dada la máquina de Mealy ME1 = ({0 , 1}, {a , b}, { r, s, t }, f, g) Función Transición f

Función Salida g

f

0

1

g

0

1

r

r

t

r

a

b

s

r

s

s

a

b

t

r

s

t

b

a

Su grafo:

y la salida que corresponde a una entrada = 00011001 comenzando en el estado r será : aaabaaab

Ahora comenzaremos el proceso de conversión a una máquina de Moore equivalente:

MO1 = ({0 , 1}, {a , b}, Q´, f´, g´) donde: f(r, 0) = r , ra f(r, 1) = t , tb f(s, 0) = r , ra f(s, 1) = s , sb f(t, 0) = r , rb f(t, 1) = s , sa

g(r, 0) = a Entonces: Q’ ; g´( ra) = a ; f´( ra , 0 ) = ra ; f´( rb , 0 ) = ra g(r, 1) = b Entonces: Q’ ; g´( tb) = b ; f´( ra , 1 ) = tb ; f´( rb , 1 ) = tb g(s, 0) = a Entonces : Q’ ; g´( ra) = a ; f´( sa , 0 ) = ra ; f´( sb , 0 ) = ra g(s, 1) = b Entonces: Q’ ; g´( sb) = b ; f´( sa , 1 ) = sb ; f´( sb , 1 ) = sb g(t, 0) = b Entonces: Q’ ; g´( rb ) = b ; f´( ta , 0 ) = rb ; f´( tb , 0 ) = rb g(t, 1) = a Entonces: Q’ ; g´( sa) = a ; f´( ta , 1 ) = sa ; f´( tb , 1 ) = sa

Nos quedará entonces: Q´ = { ra , tb , sb , rb , sa },vemos entonces que el estado t a ,nunca ha sido creado, por lo tanto se anularán todas las transiciones correspondientes a

dicho estado. Función Transición f´

Función Salida g’



0

1



ra

ra

tb

ra

a

tb

rb

sa

tb

b

sb

ra

sb

sb

b

rb

ra

tb

rb

b

sa

ra

sb

sa

a

Y el grafo correspondiente a la máquina quedará:

Si ahora, analizamos el comportamiento de esta máquina de moore, para la misma cadena aceptada por la máquina de mealy equivalente vemos lo siguiente. Para determinar por cual estado debemos comenzar lo haremos por aquellos estados que participaron en el misto estado r de la máquina de mealy, estos estados serán (r a y rb )

Donde se evidencia que la máquina de Moore responde de igual manera que la Máquina de Mealy

2.5.5.1. De Moore a Mealy : Dada la Máquina de Moore: MO = { ME

=

{

, ,

, Q, f, g} ,

Construiremos La Máquina de Mealy

Q,

f,

g´}

de

la

siguiente

manera.

En donde por cada transición y salida en el que se cumpla : f(q,a)=p g

(

q

)

=

b

(

con

q,

p

Q

;

a

;

Se

b

) define:

g´( q , a ) = b Ejemplo: Dada la máquina de Moore MO2 = ({0 , 1}, {a , b}, { r, s }, f, g) Función Transición f

Función Salida g

f

0

1

g

r

r

s

r

a

Grafo:

y la salida que corresponde a una entrada

= 00100111 comenzando en el estado r será :

aaabaaab

Ahora comenzaremos el proceso de conversión para obtener a una máquina de Mealy equivalente:

ME2 = ({0 , 1}, {a , b}, Q, f, g´) donde: f ( r , 0 ) = r ; g ( r ) = a ; Por lo tanto g’ ( r , 0 ) = a ; f ( r , 1 ) = s ; g ( s ) = b ; Por lo tanto g’ ( r , 1 ) = b ; f ( s , 0 ) = s ; g ( s ) = b ; Por lo tanto g’ ( r , 0 ) = b ; f ( s , 1 ) = r ; g ( r ) = a ; Por lo tanto g’ ( r , 1 ) = a ; por lo tanto las funciones f y g´ quedarán:

MÁQUINAS DE ESTADOS: AUTÓMATAS FINITOS DETERMINISTAS (AFD)

Comenzaremos ahora a definir este tipo de máquinas que a diferencia de las máquinas secuenciales, estas poseen estado inicial previsto que es por donde comenzarán su ejecución. Autómatas Finitos Deterministas (AFD) Este tipo de autómatas admite su definición de dos maneras bien diferentes:: Como autómatas traductores o reconocedores. La definición como autómatas traductores continua a la definición de las máquinas secuenciales, y se los podría definir como una subclase de estas, ya que los autómatas finitos tendrían como limitante no poder iniciar desde cualquier estado como lo hacen en las máquinas secuenciales. La forma que adoptaremos para la definición de los autómatas finitos deterministas es como autómatas reconocedores, ya que se ajusta con los contenidos de la informática teórica y utilización que se les da dentro del diseño de los analizadores léxicos. Estos autómatas solo se limitarán a aceptar o no una determinada cadena recibida en la entrada, por lo tanto podemos decir que la salida de los mismos solo tendrá dos valores posibles aceptar o no aceptar a la palabra de entrada. Al igual que en las máquinas secuenciales, estos autómatas transitarán entre un conjunto finito de estados posibles, a medida que reciban sucesivamente los caracteres de entrada, en un instante determinado de tiempo el autómata solo podrá estar en uno y solo uno de los estados posibles. Una característica importante de este tipo de autómatas es el determinismo, lo cuál significa que estando en un estado y recibiendo una entrada del exterior el autómata tendrá la posibilidad de transitar a uno y solo un estado del conjunto de estados posibles. Con respecto al conjunto de estados ahora se pueden clasificar en tres tipos: Estado Inicial, que es pon donde comenzará la ejecución de la máquina; Estados finales o de aceptación que será un subconjunto del conjunto de estados por los que transitará la máquina, y si cuando se hayan terminado de procesar todos los símbolos de entrada y no reste ningún símbolo por leer, la máquina quede posicionada en uno de estos estados de aceptación, se concluirá que la cadena procesada será aceptada por el autómata. y Estados Intermedios, que tienen comportamiento idéntico a los definidos en las máquinas secuenciales. Definición:

Los autómatas finitos deterministas quedarán formalmente definida mediante una quíntupla como sigue: AFD = ( ∑ , Q, q0, F, f ) donde:



Alfabeto de símbolos de entrada.

Q

Conjunto finito de estados

q0

q0

F

F Q - es el conjunto de estado finales de aceptación.

f

Función de transición de estados definida como

Q – estado inicial previsto

f: Q x ∑

Q

Interpretación de funcionamiento:

Este autómata recibirá una cadena en la cinta de entrada e ira procesando de uno a la vez los símbolos de entrada. Comenzará su funcionamiento posicionada en el estado inicial, y desde este estado comenzará su ejecución. En cada intervalo de tiempo discreto realizará dos acciones las cuales serán consideradas como acciones indivisibles en un determinado intervalo de tiempo. Las acciones que realiza son: ·

Leer el próximo símbolo, desde la cinta de entrada.

·

Transitar, cambiar de estado

Extensión a palabras El autómata finito determinista realizará transiciones de estados a través de la función f solo cuando reciba un símbolo de entrada. Esto puede generalizarse a una palabra completa, o cuando reciba la palabra vacia, en este caso se denominará una función de transición f´ como la función f´ : Q x ∑*

Q

Donde: f´ (q, ax) = f´(f(q,a),x) f´ (q,

)= q

con a

∑;x

∑* ; q

Q

Aceptación de Palabras: Una palabra será aceptada por un AFD si estando formada pos símbolos pertenecientes al alfabeto de entrada, al finalizar de procesar la misma, el autómata queda posicionado en una de los estados perteneciente al conjunto de estados finales de aceptación.

Dada: x W(∑) f ( q0, x) = qn Si qn

F la cadena x es aceptada

Lenguaje reconocido por un AFD: Es el conjunto de todas las palabras reconocidas por el Autómata Finito Determinista.

L AFD = { x / x

∑* y f ( q0, x) = qn con qn

F}

Ejemplo: Dado el siguiente AFD definido como:

AFD1 = ( ∑, Q, qi, F, f ), donde: ∑= { 0,1 } (Conjunto de símbolos de entrada del AFD) Q= { p, q, r } (Conjunto de estados del AFD) qi = p (estado inicial del AFD (p Є Q)) F= {q } (Conjunto de estados de aceptación del AFD ({q } с Q)) f: función de transición de estados del AFD Donde la función f será:

f

0

1

También puede expresarse como:

*

p

q

r

f(p, 0)= q

f(p, 1)= r

q

r

q

f(q, 0)= p

f(q, 1)= q

r

r

r

f(r, 0)= r

f(r, 1)= r

Representando su comportamiento por medio del grafo dirigido:

En donde el lenguaje aceptado por esta AFD será:

L AFD1 = {x / x

∑* y x = 0.1n con n

N

0}

Accesibilidad entre estados (A) Dados dos estados dentro de un autómata, se dice que uno de los estado es accesible desde el otro, si existe una palabra x formada por símbolos del alfabeto de entrada que hace que partiendo de este estado y a través de la aplicación de la función de transición se pueda llegar hasta el otro. De esta manera definiremos: Sean p y q existe x

Q dos estados dentro de un AFD y W(∑) tal que:

f´( q , x ) = p Entonces se dice que:

pAq ( Se lee – p es accesible desde q ) Conjunto Conexo Un conjunto conexo es aquel en donde todos sus estados son accesibles desde el estado inicial. Por lo tanto un AFD será conexo si todo estado perteneciente al conjunto de estados es accesible desde el estado inicial. Si en un AFD existieran estados que no son accesibles desde el estado inicial, los mismos pueden ser eliminados, de manera de simplificar el autómata. Esta eliminación no afectará al comportamiento y por lo tanto continuará aceptando el mismo Lenguaje. Ejemplo de conjunto conexo: Dado el siguiente AFD definido como: AFD1 = ( ∑, Q, qi, F, f ), donde: ∑= { 0,1 } Q= { p, q, r , t, s } qi = p F= {q ,s } Donde la función f será:

*

*

F

0

1

También puede expresarse como:

p

q

r

f(p, 0)= q

f(p, 1)= r

q

r

q

f(q, 0)= p

f(q, 1)= q

R

r

r

f(r, 0)= r

f(r, 1)= r

T

s

q

f(t, 0)= s

f(t, 1)= q

s

s

t

f(s, 0)= s

f(s, 1)= t

El Grafo correspondiente será:

Analizando, el grafo del AFD, vemos que alos estados t y s , es imposible acceder desde el estado inicial p, por lo tanto estos estados pueden ser eliminados del AFD y el comportamiento del autómata no se alterará. Equivalencias en los AFD A continuación presentaremos definiciones de equivalencias para culminar con equivalencia entre Autómatas Finitos Deterministas. Equivalencias entre estados: Dos estados p y q serán equivalentes si: Para toda cadena “ x ” que desde el estado p hace transitar el autómata hasta un estado de aceptación, también lo hace desde el estado q. Debiendo ocurrir simultaneamente que para toda otra cadena “ y “ que no hacen transitar desde el estado p hasta un estado de aceptación, tampoco lo hará desde el estado q. De esta manera definiremos: Sean p y q

Q dos estados dentro de un AFD

p E q ( Se lee: p y q son equivalentes)

si cadena x W(∑) - se puede alcanzar un estado final previsto tanto comenzando desde el estado p como el de q Y otra cadena y W(∑) – no se puede alcanzar un estado final previsto tanto comenzando desde el estado p como el de q. Equivalencias entre estados de longitud n: Dos estados p y q serán equivalentes de longitud n si: cumplen la equivalencia planteada en

la sección anterior pero con la restricción de que la longitud de las cadenas x e y sean menor o igual a n. De esta manera definiremos: Sean p y q

Q dos estados dentro de un AFD

p E q son equivalentes de longitud n si si

x

W(∑) , | x | n - se puede alcanzar un estado final previsto tanto comenzando desde el estado p como el de q Y

y W(∑) , | y | n – no se puede alcanzar un estado final previsto tanto comenzando desde el estado p como el de q

Equivalencia entre AFD Dos AFD A1 y A2 son equivalentes, y se dice: A1 E A2 Si ambos autómatas aceptan las mismas cadenas o sean que reconocen exactamente el mismo lenguaje. Conjunto cociente Q/E Mediante las relaciones de equivalencias entre estados se efectúa la partición del conjunto de estados en Clases de equivalencias, en la cuál se encontrarán los estados que son equivalentes entre sí. Para lograr el conjunto cociente, se comienza con la relación de equivalencia entre estados de longitud 0, o sea lo que primero se intenta formar el Q/E0, y en el caso de las AFD, este conjunto se subdivide en solo dos clases, los que pertenecen al subconjunto de estados finales de aceptación y los que no pertenecen. Q/E0 = [ {F} , {F}] Se continuará con iteraciones sucesivas, incrementando en 1 la longitud de las cadenas de entrada en cada iteración y se verificará si los estados que siendo equivalentes en una iteración anterior continúan siendo equivalentes en la nueva clase de equivalencia Q/E1. El proceso iterativo continuará, hasta conseguir la clase de equivalencia Q/E y este proceso se detendrá cuando un nuevo conjunto en una iteración i+1 se mantiene sin modificaciones con respecto al conjunto anterior. Q/E i = Q/E i+1 Se detiene el proceso. Ejemplo: Dado el autómata, determinar el conjunto cociente mínimo AFD3 = ( { a , b }, { p, q , r, s , t }, p, { r, t }, f ) , donde:

*

f

a

b

p

s

t

q

t

p

r

p

s

s

p

t

t

r

s

*

Resolución: Para la determinación del conjunto cociente, lo que debemos buscar son el mínimo conjuntos de estados que resultan diferentes entre sí y esto lo realizamos a través de la determinación de las clases de equivalencia entre estados. Para ello partimos con la equivalencia de longitud 0 que corresponderá a la división en dos clases. Los estados que son de aceptación por un lado y los que no por otro lado, y luego en un proceso iterativo se continuará verificando los estados que continúen siendo equivalentes a medida que se incrementa en 1 la longitud de las estradas. El proceso finalizará cuando una clase de equivalencia se mantenga constante ante un incremento en la longitud de la entrada. Q/E0 = [{ F } , {F}] = [{ r , t }{ p , q , s }] Denominaremos con c1 = {r, t} y c2 = {p,q,s} Lo que debemos hacer ahora, es verificar si las clases de equivalencias detectadas hasta el momento ( c1 y c2) continúan siéndolo ante una nueva entrada, o sea debemos verificar si sus estados integrantes siguen siendo equivalentes al incrementar la longitud de la cadena de entrada. c1 = {r, t}: Al estar constituido por los estados r y t, con una nueva entrada para cada uno de esos estados deberán coincidir en que transitarán a estados que pertenecen a una misma clase de equivalencia. f( r,a) = p

f( r,b) = s

f( t,a) = r

f( t,b) = s

Por lo tanto f ( c1, a ) = van conjuntos cocientes diferentes de la clase anterior, y por lo tanto los estados r y t no podrán seguir siendo equivalentes. No ocurre lo mismo con una entrada b, ya que f(c1,b) van a una misma clases de equivalencia anterior. Pero con que al menos con una entrada no vaya a una misma clase anterior, los estados r y t no serán equivalentes y por lo tanto deberán ser separados del conjunto c1. c2 = {p, q, s}: Veremos como transitan ante una nueva entrada (long. 1) f( p,a) = s

c2

f( p,b) = t

c1

f( q,a) = t

c1

f( q,b) = p

c2

f( s,a) = p

c2

f( s,b) = t

c1

Vemos que los estados p y s pertenecientes a c2 podrán continuar siendo equivalentes ya que sus salidas a las entradas respectivas caen dentro de una misma clase de equivalencia anterior. No ocurre lo mismo con el estado q que deberá ser separado de la clase de equivalencia c2. Por lo tanto Q/E1, nos quedará: Q/E1 = [{ r } , { t } , { q }, {p , s }] Denominaremos con d1 = {r} ; d2 = {t} ; d3 = {q} ; d4 = {p,s} Ahora debemos comprobar, si incrementando en uno la cadena de entrada los estados p y s continúan siendo equivalentes. d4 = {p, s}: Veremos que pasa con una nueva entrada para cada uno de esos estados. f( p,a) = s f( s,a) = p

d4

d4

f( p,b) = t

f( s,b) = t

d2 d2

De esta manera, se verifica que ante una nueva entrada, los estados p y s que son equivalentes, continúan siéndolo.

Q/E2 = [{ r } , { t } , { q }, {p , s }] Vemos ahora que: Q/E1 = Q/E2, por lo tanto el proceso se detiene, y las clases de equivalencias resultan: Q/E = [{ r } , { t } , { q }, {p , s }] Denominaremos con d1 = {r} ; d2 = {t} ; d3 = {q} ; d4 = {p,s} a los estados, y el nuevo autómata nos quedará: AFD3 ´= ( { a , b }, { d1, d2 , d3, d4 }, d4, {d1, d2}, f ) , donde: f

a

b

d1

d4

d4

d2

d1

d4

d3

d2

d4

d4

d4

d2

Minimización de AFD El objetivo de minimización de los AFD, es obtener un autómata equivalente al dado, o sea que aceptará el mismo lenguaje, pero este nuevo autómata contendrá un menor número de estados. Los pasos a realizar para la obtención del autómata mínimo son los siguientes: ·

Se debe encontrar el autómata conexo, para estos el autómata debe cumplir que todos sus estados sean accesibles desde el estado inicial. Si existiera algún estado que no cumpliera con esta condición se lo podrá eliminar, sin que se afecte el lenguaje aceptado por el autómata.

·

Determinar el Conjunto cociente, en el cuál nos indicará el mínimo número de estados con diferente significado.

·

Construir el nuevo autómata, para ello se utilizarán los estados determinados por las clases de equivalencia. El estado inicial del nuevo autómata, pertenecerá a la clase de equivalencia en donde se encuentre el estado inicial del autómata original, y los mismo ocurrirá con los estados finales de aceptación, en donde serán los que pertenezcan a clases de equivalencias donde se encuentren estados finales de aceptación del autómata original. Con respecto a las transiciones de los nuevos estados, estas se realizarán en función a las transiciones de los estados que conforman la clase de equivalencia respectiva.

Ejemplo: Dado el siguiente AFD definido como: AFD4 = ( ∑, Q, qi, F, f ), donde: ∑= { a , b }

Q= { p, q, r , t, s } qi = p F= {q , r } Donde la función f será: f

a

b

p

s

r

*

q

t

p

*

r

p

s

s

p

r

t

t

q

Se pide : a)

Grafo

b)

Autómata conexo

c)

Conjunto Cociente

d)

Autómata mínimo

e)

Grafo del nuevo autómata

f)

Identificar una cadena de longitud 5 y verificar que la misma es aceptada por ambos autómatas

Resolución: a)

Grafo del Autómata

b) Autómata Conexo Se verifica la accesibilidad de estados desde el estado inicial, y vemos que los estados t y q resultan inaccesibles, por lo tanto pueden ser descartados y nos queda un nuevo AFD4 ´, de la siguiente manera: AFD4 ´ = ( { a , b }, { p, r , s }, p, { r }, f ´) , donde: Donde la función f será: f'

a

b

p

s

r

*r

p

s

s

p

r

Y el nuevo grafo será:

c) Conjunto cociente

Para la determinación del conjunto cociente, lo que debemos buscar son el mínimo conjuntos de estados que resultan diferentes entre sí y esto lo realizamos a través de la determinación de las clases de equivalencia entre estados. Para ello partimos con la equivalencia de longitud 0 que corresponderá a la división en dos clases. los estados que son de aceptación por un lado y los que no por otro lado. Q/E0 = [ {p, s}, {r}] Denominaremos con c1 = {p, s} y c2 = {r} Lo que debemos hacer ahora, es verificar si las clases de equivalencias detectadas hasta el momento continúan siéndolo ante una nueva entrada, o sea debemos verificar si sus estados integrantes siguen siendo equivalentes al incrementar la longitud de la cadena de entrada. Por lo tanto, lo verificaremos para c1 = {p, s}. Al estar constituido por los estados p y s, con una nueva entrada para cada uno de esos estados deberán coincidir en que transitarán a estados que pertenecen a una misma clase de equivalencia. f( p,a) = s f( s,a) = p La salida con la entrada a son los estados s , p que pertenecen a una misma clase de equivalencia anterior por lo tanto, podemos decir que f ( c1, a ) = c1 Con respecto a la entrada b: f( p,b) = r f( s,b) = r La salida con la entrada b es el estado r por lo tanto, podemos decir que f ( c1, b ) = c2 Con lo que se puede afirmar, que la clase de equivalencia c1, continúa siéndolo para una nueva entrada y por lo tanto: Q/E1 = [ {p, s}, {r}] Ahora como Q/E0 = Q/E1 el proceso se detiene y la clase equivalencia con el mínimo número de estados será Q/E = [ {p, s}, {r}] = [ {c1}, {c2}] d) Autómata mínimo:

AFD4 ´´ = ( { a , b }, { c1, c2 }, c1, { c2 }, f´´ ) , donde: El estado inicial del nuevo autómata será c1, ya que en este se encuentra contenido el estado p que era el estado inicial del autómata equivalente. Con respecto al estado c2, que es el estado final de aceptación, lo es ya que tiene incluido al estado r que lo era anteriormente. Para el armado de la nueva función de transición, lo haremos siguiendo las transiciones originales de cada uno de los estados que componen el estado resultante de la clase de equivalencia, por lo tanto nos queda:

f''

a

b

c1

c1

c2

* c2

c1

c1

e) Nuevo Grafo

f) Verificación: Dadas dos cadenas x1 y x2 ambas de longitud 5, verificaremos si ambos autómatas son capaces de reconocerlas x1 = aabbb x2 = baaab Para el caso del AFD4 f ( p, x1 ) = r f ( p, x2 ) = r

En ambas cadenas al estado que se llega es r, el cuál pertenece al conjunto F por lo tanto ambas cadenas x1 y x2 son aceptadas por el autómata AFD4. Para el caso del AFD4´´ f ( c1, x1 ) = c2 f ( c1, x2 ) = c2 En ambas cadenas al estado que se llega es c2, el cuál pertenece al conjunto F por lo tanto ambas cadenas x1 y x2 son aceptadas por el autómata AFD4´´. Configuración instantánea y movimiento El concepto de configuración instantánea o descripción instantánea, permite describir la configuración del autómata en cada momento. Representación: Lo representaremos mediante un par ordenado ( q, w ) en donde, q Perteneciente al conjunto de estado Q, es el estado en donde se encuentra el autómata, w formada con los símbolos del alfabeto de entrada, será la cadena que resta por leer. Configuración Inicial: Se establecerá como: ( q0 , x ) ; donde q0 será el estado inicial, y x la cadena a ser leida Configuración Final: Se establecerá como:

( qn,

) =

; donde qn será el estado en donde se detiene el

autómata, cuando no resta nada por leer ( ). Movimiento: Es la transición de una configuración a otra: ( p, a )

( q , w ) ; dados p , q

Q;a

∑;w

∑*

este movimiento será posible, solo si existe una transición mediante la aplicación de: f( p , a ) = q Implementación de un Algoritmo Dentro de los usos que se le pueden dar a las máquinas de estados, y en particular a los AFD, está el reconocimiento de cadenas. Para realizar este reconocimiento en forma precisa y automatizada, el mismo puede implementarse en cualquier lenguaje de programación. Será posible que habiendo diseñado un autómata que sea capaz de reconocer un conjunto de cadenas de un lenguaje, construir un programa que implemente dicho autómata en algún lenguaje de programación, a tal fin el Algoritmo de funcionamiento del programa puede ser obtenido a partir del AFD en forma directa.

Ejemplo: AFD5 = ( {0,1}, {p,q,r,s,t}, p, {q}, f ), donde: Donde la función f : f

0

1

p

s

t

*q

q

t

r

q

t

s

s

r

t

t

t

El Grafo será:

El lenguaje aceptado por esta autómata es: L AFD5 = { x / x

W(Σ) / an.b.am con n,m

1}

Diagrama de flujo de algoritmo: El diagrama de flujo elemental, asumiendo que en la entrada solo se ingresarán símbolos a y b, y que siempre se ingresará al menos un carácter válido es el siguiente:

Hacé click sobre la imagen para verla en tamaño completo

MÁQUINAS DE ESTADOS: AUTÓMATAS FINITOS DETERMINISTAS (AFD)

Comenzaremos ahora a definir este tipo de máquinas que a diferencia de las máquinas secuenciales, estas poseen estado inicial previsto que es por donde comenzarán su ejecución. Autómatas Finitos Deterministas (AFD) Este tipo de autómatas admite su definición de dos maneras bien diferentes:: Como autómatas traductores o reconocedores. La definición como autómatas traductores continua a la definición de las máquinas secuenciales, y se los podría definir como una subclase de estas, ya que los autómatas finitos tendrían como limitante no poder iniciar desde cualquier estado como lo hacen en las máquinas secuenciales. La forma que adoptaremos para la definición de los autómatas finitos deterministas es como autómatas reconocedores, ya que se ajusta con los contenidos de la informática teórica y utilización que se les da dentro del diseño de los analizadores léxicos. Estos autómatas solo se limitarán a aceptar o no una determinada cadena recibida en la entrada, por lo tanto podemos decir que la salida de los mismos solo tendrá dos valores posibles aceptar o no aceptar a la palabra de entrada. Al igual que en las máquinas secuenciales, estos autómatas transitarán entre un conjunto finito de estados posibles, a medida que reciban sucesivamente los caracteres de entrada, en un instante determinado de tiempo el autómata solo podrá estar en uno y solo uno de los estados posibles. Una característica importante de este tipo de autómatas es el determinismo, lo cuál significa que estando en un estado y recibiendo una entrada del exterior el autómata tendrá la posibilidad de transitar a uno y solo un estado del conjunto de estados posibles. Con respecto al conjunto de estados ahora se pueden clasificar en tres tipos: Estado Inicial, que es pon donde comenzará la ejecución de la máquina; Estados finales o de aceptación que será un subconjunto del conjunto de estados por los que transitará la máquina, y si cuando se hayan terminado de procesar todos los símbolos de entrada y no reste ningún símbolo por leer, la máquina quede posicionada en uno de estos estados de aceptación, se concluirá que la cadena procesada será aceptada por el autómata. y Estados Intermedios, que tienen comportamiento idéntico a los definidos en las máquinas secuenciales. Definición: Los autómatas finitos deterministas quedarán formalmente definida mediante una quíntupla como sigue: AFD = ( ∑ , Q, q0, F, f ) donde:

Una palabra será aceptada por un AFD si estando formada pos símbolos pertenecientes al alfabeto de entrada, al finalizar de procesar la misma, el autómata queda posicionado en una de los estados perteneciente al conjunto de estados finales de aceptación.

Dada: x W(∑) f ( q0, x) = qn Si qn

F la cadena x es aceptada

Lenguaje reconocido por un AFD: Es el conjunto de todas las palabras reconocidas por el Autómata Finito Determinista.

L AFD = { x / x

∑* y f ( q0, x) = qn con qn

F}

Ejemplo: Dado el siguiente AFD definido como:

AFD1 = ( ∑, Q, qi, F, f ), donde: ∑= { 0,1 } (Conjunto de símbolos de entrada del AFD) Q= { p, q, r } (Conjunto de estados del AFD) qi = p (estado inicial del AFD (p Є Q)) F= {q } (Conjunto de estados de aceptación del AFD ({q } с Q)) f: función de transición de estados del AFD Donde la función f será:

*

f

0

1

También puede expresarse como:

p

q

r

f(p, 0)= q

f(p, 1)= r

q

r

q

f(q, 0)= p

f(q, 1)= q

Ejemplo de conjunto conexo: Dado el siguiente AFD definido como: AFD1 = ( ∑, Q, qi, F, f ), donde: ∑= { 0,1 } Q= { p, q, r , t, s } qi = p F= {q ,s } Donde la función f será:

*

*

F

0

1

También puede expresarse como:

p

q

r

f(p, 0)= q

f(p, 1)= r

q

r

q

f(q, 0)= p

f(q, 1)= q

R

r

r

f(r, 0)= r

f(r, 1)= r

T

s

q

f(t, 0)= s

f(t, 1)= q

s

s

t

f(s, 0)= s

f(s, 1)= t

El Grafo correspondiente será:

Analizando, el grafo del AFD, vemos que alos estados t y s , es imposible acceder desde el estado inicial p, por lo tanto estos estados pueden ser eliminados del AFD y el comportamiento del autómata no se alterará. Equivalencias en los AFD A continuación presentaremos definiciones de equivalencias para culminar con equivalencia entre Autómatas Finitos Deterministas. Equivalencias entre estados: Dos estados p y q serán equivalentes si: Para toda cadena “ x ” que desde el estado p hace transitar el autómata hasta un estado de aceptación, también lo hace desde el estado q. Debiendo ocurrir simultaneamente que para toda otra cadena “ y “ que no hacen transitar desde el estado p hasta un estado de aceptación, tampoco lo hará desde el estado q. De esta manera definiremos: Sean p y q

Q dos estados dentro de un AFD

p E q ( Se lee: p y q son equivalentes)

si cadena x W(∑) - se puede alcanzar un estado final previsto tanto comenzando desde el estado p como el de q Y otra cadena y W(∑) – no se puede alcanzar un estado final previsto tanto comenzando desde el estado p como el de q. Equivalencias entre estados de longitud n: Dos estados p y q serán equivalentes de longitud n si: cumplen la equivalencia planteada en la sección anterior pero con la restricción de que la longitud de las cadenas x e y sean menor o igual a n.

De esta manera definiremos: Sean p y q

Q dos estados dentro de un AFD

p E q son equivalentes de longitud n si si

x

W(∑) , | x | n - se puede alcanzar un estado final previsto tanto comenzando desde el estado p como el de q Y

y W(∑) , | y | n – no se puede alcanzar un estado final previsto tanto comenzando desde el estado p como el de q

Equivalencia entre AFD Dos AFD A1 y A2 son equivalentes, y se dice: A1 E A2 Si ambos autómatas aceptan las mismas cadenas o sean que reconocen exactamente el mismo lenguaje. Conjunto cociente Q/E Mediante las relaciones de equivalencias entre estados se efectúa la partición del conjunto de estados en Clases de equivalencias, en la cuál se encontrarán los estados que son equivalentes entre sí. Para lograr el conjunto cociente, se comienza con la relación de equivalencia entre estados de longitud 0, o sea lo que primero se intenta formar el Q/E0, y en el caso de las AFD, este conjunto se subdivide en solo dos clases, los que pertenecen al subconjunto de estados finales de aceptación y los que no pertenecen. Q/E0 = [ {F} , {F}] Se continuará con iteraciones sucesivas, incrementando en 1 la longitud de las cadenas de entrada en cada iteración y se verificará si los estados que siendo equivalentes en una iteración anterior continúan siendo equivalentes en la nueva clase de equivalencia Q/E1. El proceso iterativo continuará, hasta conseguir la clase de equivalencia Q/E y este proceso se detendrá cuando un nuevo conjunto en una iteración i+1 se mantiene sin modificaciones con respecto al conjunto anterior. Q/E i = Q/E i+1 Se detiene el proceso. Ejemplo: Dado el autómata, determinar el conjunto cociente mínimo AFD3 = ( { a , b }, { p, q , r, s , t }, p, { r, t }, f ) , donde:

f

a

b

los estados r y t no podrán seguir siendo equivalentes. No ocurre lo mismo con una entrada b, ya que f(c1,b) van a una misma clases de equivalencia anterior. Pero con que al menos con una entrada no vaya a una misma clase anterior, los estados r y t no serán equivalentes y por lo tanto deberán ser separados del conjunto c1. c2 = {p, q, s}: Veremos como transitan ante una nueva entrada (long. 1) f( p,a) = s

c2

f( p,b) = t

c1

f( q,a) = t

c1

f( q,b) = p

c2

f( s,a) = p

c2

f( s,b) = t

c1

Vemos que los estados p y s pertenecientes a c2 podrán continuar siendo equivalentes ya que sus salidas a las entradas respectivas caen dentro de una misma clase de equivalencia anterior. No ocurre lo mismo con el estado q que deberá ser separado de la clase de equivalencia c2. Por lo tanto Q/E1, nos quedará: Q/E1 = [{ r } , { t } , { q }, {p , s }] Denominaremos con d1 = {r} ; d2 = {t} ; d3 = {q} ; d4 = {p,s} Ahora debemos comprobar, si incrementando en uno la cadena de entrada los estados p y s continúan siendo equivalentes. d4 = {p, s}: Veremos que pasa con una nueva entrada para cada uno de esos estados. f( p,a) = s f( s,a) = p

d4

d4

f( p,b) = t

f( s,b) = t

d2 d2

De esta manera, se verifica que ante una nueva entrada, los estados p y s que son equivalentes, continúan siéndolo. Q/E2 = [{ r } , { t } , { q }, {p , s }] Vemos ahora que: Q/E1 = Q/E2, por lo tanto el proceso se detiene, y las clases de

equivalencias resultan: Q/E = [{ r } , { t } , { q }, {p , s }] Denominaremos con d1 = {r} ; d2 = {t} ; d3 = {q} ; d4 = {p,s} a los estados, y el nuevo autómata nos quedará: AFD3 ´= ( { a , b }, { d1, d2 , d3, d4 }, d4, {d1, d2}, f ) , donde: f

a

b

d1

d4

d4

d2

d1

d4

d3

d2

d4

d4

d4

d2

Minimización de AFD El objetivo de minimización de los AFD, es obtener un autómata equivalente al dado, o sea que aceptará el mismo lenguaje, pero este nuevo autómata contendrá un menor número de estados. Los pasos a realizar para la obtención del autómata mínimo son los siguientes: ·

Se debe encontrar el autómata conexo, para estos el autómata debe cumplir que todos sus estados sean accesibles desde el estado inicial. Si existiera algún estado que no cumpliera con esta condición se lo podrá eliminar, sin que se afecte el lenguaje aceptado por el autómata.

·

Determinar el Conjunto cociente, en el cuál nos indicará el mínimo número de estados con diferente significado.

·

Construir el nuevo autómata, para ello se utilizarán los estados determinados por las clases de equivalencia. El estado inicial del nuevo autómata, pertenecerá a la clase de equivalencia en donde se encuentre el estado inicial del autómata original, y los mismo ocurrirá con los estados finales de aceptación, en donde serán los que pertenezcan a clases de equivalencias donde se encuentren estados finales de aceptación del autómata original. Con respecto a las transiciones de los nuevos estados, estas se realizarán en función a las transiciones de los estados que conforman la clase de equivalencia respectiva.

Ejemplo: Dado el siguiente AFD definido como: AFD4 = ( ∑, Q, qi, F, f ), donde: ∑= { a , b } Q= { p, q, r , t, s }

qi = p F= {q , r } Donde la función f será: f

a

b

p

s

r

*

q

t

p

*

r

p

s

s

p

r

t

t

q

Se pide : a)

Grafo

b)

Autómata conexo

c)

Conjunto Cociente

d)

Autómata mínimo

e)

Grafo del nuevo autómata

f)

Identificar una cadena de longitud 5 y verificar que la misma es aceptada por ambos autómatas

Resolución: a)

Grafo del Autómata

b) Autómata Conexo Se verifica la accesibilidad de estados desde el estado inicial, y vemos que los estados t y q resultan inaccesibles, por lo tanto pueden ser descartados y nos queda un nuevo AFD4 ´, de la siguiente manera: AFD4 ´ = ( { a , b }, { p, r , s }, p, { r }, f ´) , donde: Donde la función f será: f'

a

b

p

s

r

*r

p

s

s

p

r

Y el nuevo grafo será:

c) Conjunto cociente

Para la determinación del conjunto cociente, lo que debemos buscar son el mínimo conjuntos de estados que resultan diferentes entre sí y esto lo realizamos a través de la determinación de las clases de equivalencia entre estados. Para ello partimos con la equivalencia de longitud 0 que corresponderá a la división en dos clases. los estados que son de aceptación por un lado y los que no por otro lado. Q/E0 = [ {p, s}, {r}] Denominaremos con c1 = {p, s} y c2 = {r} Lo que debemos hacer ahora, es verificar si las clases de equivalencias detectadas hasta el momento continúan siéndolo ante una nueva entrada, o sea debemos verificar si sus estados integrantes siguen siendo equivalentes al incrementar la longitud de la cadena de entrada. Por lo tanto, lo verificaremos para c1 = {p, s}. Al estar constituido por los estados p y s, con una nueva entrada para cada uno de esos estados deberán coincidir en que transitarán a estados que pertenecen a una misma clase de equivalencia. f( p,a) = s f( s,a) = p La salida con la entrada a son los estados s , p que pertenecen a una misma clase de equivalencia anterior por lo tanto, podemos decir que f ( c1, a ) = c1 Con respecto a la entrada b: f( p,b) = r f( s,b) = r La salida con la entrada b es el estado r por lo tanto, podemos decir que f ( c1, b ) = c2 Con lo que se puede afirmar, que la clase de equivalencia c1, continúa siéndolo para una nueva entrada y por lo tanto: Q/E1 = [ {p, s}, {r}] Ahora como Q/E0 = Q/E1 el proceso se detiene y la clase equivalencia con el mínimo número de estados será Q/E = [ {p, s}, {r}] = [ {c1}, {c2}] d) Autómata mínimo:

AFD4 ´´ = ( { a , b }, { c1, c2 }, c1, { c2 }, f´´ ) , donde: El estado inicial del nuevo autómata será c1, ya que en este se encuentra contenido el estado p que era el estado inicial del autómata equivalente. Con respecto al estado c2, que es el estado final de aceptación, lo es ya que tiene incluido al estado r que lo era anteriormente. Para el armado de la nueva función de transición, lo haremos siguiendo las transiciones originales de cada uno de los estados que componen el estado resultante de la clase de equivalencia, por lo tanto nos queda:

f''

a

b

c1

c1

c2

* c2

c1

c1

e) Nuevo Grafo

f) Verificación: Dadas dos cadenas x1 y x2 ambas de longitud 5, verificaremos si ambos autómatas son capaces de reconocerlas x1 = aabbb x2 = baaab Para el caso del AFD4 f ( p, x1 ) = r f ( p, x2 ) = r

En ambas cadenas al estado que se llega es r, el cuál pertenece al conjunto F por lo tanto ambas cadenas x1 y x2 son aceptadas por el autómata AFD4. Para el caso del AFD4´´ f ( c1, x1 ) = c2 f ( c1, x2 ) = c2 En ambas cadenas al estado que se llega es c2, el cuál pertenece al conjunto F por lo tanto ambas cadenas x1 y x2 son aceptadas por el autómata AFD4´´. Configuración instantánea y movimiento El concepto de configuración instantánea o descripción instantánea, permite describir la configuración del autómata en cada momento. Representación: Lo representaremos mediante un par ordenado ( q, w ) en donde, q Perteneciente al conjunto de estado Q, es el estado en donde se encuentra el autómata, w formada con los símbolos del alfabeto de entrada, será la cadena que resta por leer. Configuración Inicial: Se establecerá como: ( q0 , x ) ; donde q0 será el estado inicial, y x la cadena a ser leida Configuración Final: Se establecerá como:

( qn,

) =

; donde qn será el estado en donde se detiene el

autómata, cuando no resta nada por leer ( ). Movimiento: Es la transición de una configuración a otra: ( p, a )

( q , w ) ; dados p , q

Q;a

∑;w

∑*

este movimiento será posible, solo si existe una transición mediante la aplicación de: f( p , a ) = q Implementación de un Algoritmo Dentro de los usos que se le pueden dar a las máquinas de estados, y en particular a los AFD, está el reconocimiento de cadenas. Para realizar este reconocimiento en forma precisa y automatizada, el mismo puede implementarse en cualquier lenguaje de programación. Será posible que habiendo diseñado un autómata que sea capaz de reconocer un conjunto de cadenas de un lenguaje, construir un programa que implemente dicho autómata en algún lenguaje de programación, a tal fin el Algoritmo de funcionamiento del programa puede ser obtenido a partir del AFD en forma directa.

Ejemplo: AFD5 = ( {0,1}, {p,q,r,s,t}, p, {q}, f ), donde: Donde la función f : f

0

1

p

s

t

*q

q

t

r

q

t

s

s

r

t

t

t

El Grafo será:

El lenguaje aceptado por esta autómata es: L AFD5 = { x / x

W(Σ) / an.b.am con n,m

1}

Diagrama de flujo de algoritmo: El diagrama de flujo elemental, asumiendo que en la entrada solo se ingresarán símbolos a y b, y que siempre se ingresará al menos un carácter válido es el siguiente:

Hacé click sobre la imagen para verla en tamaño completo

MÁQUINAS DE ESTADOS: AUTÓMATAS FINITOS NO DETERMINISTAS (AFND)

Autómatas Finitos No Deterministas (AFND) Definición: Un Autómata finito determinista queda definido por un quíntupla, al igual que en los AFD, y que su diferencia fundamental se encuentra, en como se definirá a la función de transición:

AFND = ( ∑ , Q, q0, F, f ) donde:



Alfabeto de símbolos de entrada.

Q

Conjunto finito de estados

q0

qo

F

F Q - es el conjunto de estado finales de aceptación.

f

Función de transición de estados definida como

Q – estado inicial previsto

f: Q x (∑ U {

} ) → P (Q)

En donde P (Q), es el conjunto que se puede armar con todos los subconjuntos de Q Este tipo de autómatas se diferencia de los AFD, básicamente en como puede constituirse la función de transición:. Esta diferencias son las siguientes:

1)

Para cada par estado entrada, el autómata puede tener la posibilidad de transitar a mas de un estado posible.

2)

Para algún par de estado entrada, el autómata puede no tener definido ninguna transición. Lo que significa que podrá realizar transición alguna.

3)

Puede realizar transiciones de un estado a otro sin leer símbolo alguno de la entrada. A este tipo particular de

transiciones se las denomina transiciones- .

Ejemplo: Una AFND puede definirse como sigue:

AFND1 = ( { 1 , 0 }, { p, q , r, s , t }, p, { r, t }, f ) , donde: la función f puede definirse: En forma explicita:

f (p,0) = r f (p,1) = {t,s}

f (p, ) = t

f (q,1) = {s,r} f (r,0) = p f (s,0) = {p,r}

f (s,1) = t f (t, ) = s f (t,1) = s

Tabla de doble entrada: Al igual que en los AFD tendremos:

· En las filas los estados · si el estado es final lo antecederá un * · si el estado es inicial lo marcaremos con una → · En las columnas se pondrán los símbolos del alfabeto de entrada y se añadirá una columna adicional para · En la intersección (celdas de la matriz) se indicarán las transiciones

f

0

1

p

r

{t,s}

q

t

{s,r}

r

p

s

{p,r}

t

t

s

s

En la tabla f de la función de transición, se encuentran presentes las tres situaciones que se admiten en los AFND a diferencia de los AFD. La situación identificada como de no determinismo propiamente dicho, en donde para un estado determinado y ante una misma entrada, el autómata tiene la posibilidad de transitar a uno o mas estado. Esta situación se presenta en tres oportunidades: f (p,1) = {t,s} f (q,1) = {s,r} f (s,0) = {p,r}

y en representación gráfica de f (p,1) = {t,s} sería:

La segunda situación cuando que es no tiene definida transición a estado alguno se presenta en las siguientes situaciones:

f (q,0) =

f ( r,1) = f ( t,0) =

Y la tercer situación es cuando tiene la posibilidad de transitar de estado, aún sin leer ningún símbolo de la entrada, esta situación se evidencia en las siguientes situaciones:

f (p, ) = t f (t, ) = s

Gráficamente se evidencia f (p, ) = q de la siguiente manera:

Diagrama de transiciones:

·

Cada Nodo es un estado

·

El estado inicial tendrá un arco entrante no identificado

·

Los estados finales tendrán doble círculo.

·

Existirá un arco con sentido, etiquetado con un símbolo a entre dos nodos p y q si existe una transición F(p,a) = q.

Conceptos asociados a los AFND A continuación presentaremos un conjunto de definiciones, que resultan necesarias, para el tratamiento de este tipo de Autómatas:

·

Relaciones de Transiciones-

(Conjunto T).

·

Cierre transitivo de la relación T ; (Conjunto T*).

·

Extensión a palabras.

·

Lenguaje Aceptado por un AFND

·

Equivalencias entre AFD y AFND

Relaciones de Transiciones-λ (Conjunto T). Es la relación que se establece entre los pares de estados en que existe una transición-λ. Esta relación también es reflexiva, lo que significa también existirá una transición λ entre los estados contra ellos mismos, de esta manera se verifica que para todo estado perteneciente al conjunto de estados existe f (q, λ) = q. Con las definiciones anteriores, se procederá a la construcción de un conjunto, denominado conjunto T , que contendrá a todos los pares de estados, que tengan transiciones- λ entre ellos. En el ejemplo del AFND1 el conjunto T resultará: T = {(p,t) , (t,s) , (p,p) , (q,q) , (r,r) , (s,s) , (t,t) }

Cierre transitivo de la relación T (Conjunto T*) Este nuevo conjunto será calculado aplicando la propiedad transitiva de las relación T , ya que se verifica que: si p T q y q T r entonces resulta que p T r. En nuestro ejemplo se verifica que aparare un nuevo par de estado (p,s) ya que al aplicar la relación transitiva p T t y t T s entonces p T s, esta es la única regla de transitividad que se puede aplicar, de esta manera el nuevo conjunto T* nos quedará.

T * = {(p,t) , (p,s) , (p,p) , (q,q) , (r,r) , (s,s) , (t,t), (t,s) }

Extensión a palabras Ahora veremos como será el comportamiento del AFND cuando la entrada deja de ser un símbolo individual y pasa a ser una cadena de caracteres, formados con símbolos del alfabeto. Definiremos entonces una función f ” : f ¨ : Q x ∑* → P (Q) en la que su comportamiento es el siguiente:

Como los AFND pueden producir transiciones entre estados sin leer ningún símbolo desde el exterior, para cada uno de los estados en donde se encuentra el autómata hay que considerar estas transiciones-λ. Por lo tanto estas transiciones se pueden presentar antes de leer el primer símbolo, entre cada uno de los símbolos procesador en la entrada y también se lo debe hacer sobre el final cuando se ha finalizado de procesar toda la cadena de entrada. Estas transiciones λ* a las que hacemos referencias son las que aparecen en el conjunto T* del cierre transitivo de las relaciones T (transiciones-λ) En nuestro ejemplo del AFND1 : vamos a calcular las transiciones que se producirán, tras recibir en la cinta de entrada la

cadena 101, entonces:

Lo primero que debemos realizar previo a la entrada del primer símbolo, es aplicar si existieren las relaciones de transiciones-λ, y entonces como primer paso se debe aplicar: f ‘’ ( p , λ) = Y entonces lo que hacemos es buscar si existen relación de transiciones dentro del conjunto T* = {(p,t) , (p,s) , (p,p) , (q,q) , (r,r) , (s,s) , (t,t), (t,s) } y lo que se obtiene es lo siguiente: f ‘’ ( p , λ) = {t,s,p} Entonces significa, que el autómata podrá estar en cualquiera de los estados t , s , p antes de recibir la primer entrada, por lo tanto se deberá ver cual serán las transiciones (aplicación de la función de transición f) con la entrada para cada uno de los estados respectivos. Ahora entonces aplicamos la función f , para el primer símbolo de la entrada.

Entonces lo hecho hasta ahora es : f ‘’ ( p , λ.1 ) = { s , t } Ahora nuevamente debemos aplicar el conjunto T* para determinar, si desde los estados s , t es posible que el autómata transite sin leer nada de la entrada. Al aplicar nuevamente el conjunto T* y nos quedará:

Hasta el momento tendremos : f ‘’ ( p , λ.1.λ ) = { s , t } Veremos ahora a que estados podrá transitar ante la lectura de la próxima entrada:

Y hasta el momento tendremos : f ‘’ ( p , λ.1.λ.0 ) = { p, r, s } Nuevamente aplicaremos el conjunto T* y tenemos:

Y hasta el momento tendremos : f ‘’ ( p , λ.1.λ.0.λ ) = { p, r, s, t } Nuevamente tomaremos al próximo símbolo de entrada “1” que será el último que tenemos que procesar, y por lo tanto aplicamos la función f.

Vemos que f ( r , 1 ) = Ф, no tiene definida transición alguna, por lo tanto la descartaremos y nos quedará. Y hasta el momento tendremos : f ‘’ ( p , λ.1.λ.0.λ.1 ) = { s, t } Ahora nos falta aplicar sobre el final de la cadena de entrada, si existe transición λ sobre los estados ( s, t ) , para ello aplicamos por última vez T*

Y finalmente tendremos : f ‘’ ( p , λ.1.λ.0.λ.1.λ ) = { s, t }; Esto significa que partiendo del estado inicial p y recibiendo la cadena de entrada 101, y al seguir todos las combinaciones posibles de transiciones de estados (todos los caminos que se pueden presentar), el autómata solo podrá quedar posicionado en el conjunto de estados {s , t} que esta formado por los estados s o t ,y como el estado t pertenece al conjunto de estado finales de aceptación, se dice que la cadena es aceptada por el AFND Lenguaje Aceptado por un AFND Será el conjunto de palabras que le hacen transitar desde el estado inicial a algún estado de finalización utilizando la función f ’’.

L AFND = { x / x ε ∑* y f “(q0 , x) ∩ F ≠ ∅

}

Significa que el lenguaje aceptado por un AFND estará constituido por todas las cadenas formadas con símbolos del alfabeto de entrada, que partiendo desde el estado inicial, el autómata quedará posicionado en un estados que pertenezca al conjunto de estados finales de aceptación. Equivalencias entre AF Determinista y No determinista La equivalencia entre autómatas AFD y AFND, siempre es posible, y esto significa que siempre se podrá dado uno de ellos obtener su equivalente. Por lo tanto, se podrá asegurar que ambos, AFD y AFND reconocerán el mismo lenguaje. Conversión de AFD a AFND : Es fácil ver que los AFD son una particularización de los AFND, ya que: por un lado no existirán transiciones-λ y por otro lado, las transiciones siempre producirán un estado determinado. Así tendremos que: 

No existirán transiciones-λ por lo tanto: f” (q, λ) = ф.



| f (p,a)| = 1 ; Siempre se transita a un solo estado

Conversión de AFND a AFD: Vamos a construir un AFD partiendo de un AFND, donde: AFND = ( ∑ , Q, q0, F, f ) AFD = ( ∑ , Q´, q0´, F ´, f ´ ) donde para la conversión se tendrá en cuenta:

·

Q´ = P(Q)

·

q0´ = f” (q0, λ) ; El nuevo estado inicial, se obtiene en forma directa de T*.

·

·

F´ = { c / c ε Q´ Si existe q ε c y q ε F } Un estado perteneciente al nuevo conjunto de estados será de finalización o aceptación, solo si esta constituido por estados que eran de aceptación en el autómata en el AFND de origen. f´(c,a) = { c / c ε Q´ = ∪ q

c

f ” (q,a)

Lo que se hará primero es calcular q0´ y luego se irán calculando los demás estados Q´ obtenidos a partir de P(Q) a medida que van presentando en el proceso de conversión.

Ejemplo:

Dado: AFND1 = ( { 0 , 1 }, { p, q , r, s , t }, p, { r }, f ) , donde:

Obtendremos ahora el AFD equivalente.

T = {(p,t) , (t,s) , (p,p) , (q,q) , (r,r) , (s,s) , (t,t) } T* = {(p,t) , (p,s) , (p,p) , (q,q) , (r,r) , (s,s) , (t,t), (t,s) } Nuevo estado inicial c0 = f “ ( p, c0 = { t , s , p}

Para el estado t

c0 :

Para el estado s ε c0 :

) ; lo obtendremos de T*

Para el estado t ε c0 :

De esta manera : f´( c0 , 0 ) = { ∪ (ⓐ, ⓑ, ⓒ) }

Por lo tanto:

f ´ (c0 , 0 ) = { t, s, p, r } = c1

De igual manera calcularemos a c0 pero ahora con entrada 1, pero simplificando la representación de los pasos y nos queda:

Ahora debemos para cada uno de los estados que vaya apareciendo, como se va comportando ante ambas entradas. Tomamos ahora el estado c1 = { t,s,p,r }

Ahora tomamos c2 = { t, s}, y vemos como se comportará la función de transición f ´ ante nuevas entradas 0 y 1, respectivamente.

Vemos ahora que no se ha creado ningún nuevo estado, por lo tanto hemos terminado el proceso de construcción de la función f ´ y de el conjunto Q ´.

Nuevo estado Q´

P(Q)

c0

{ t,s,p }

c1

{ t, s, p, r}

c2

{s,t}

Ahora estamos en condición de formalizar el AFD equivalente al AFND1 AFD = ( { 0 , 1 }, { c0 , c1, c2 }, c0 , { c1 }, f ´) , donde: Los estados finales de aceptación en el ADND, es el conjunto F = { r }, por lo tanto F ´ estará conformada por todos los nuevos estados que incluyan a dicho estado. Entonces el estado c1 será estado de aceptación del nuevo autómata.

Donde la función de transición será:

Y el grafo del AFD quedará :

EJERCICIOS RESUELTOS: AUTÓMATA FINITO, AUTÓMATA A PILA Y MAQUINA DE TURING

CONSTRUCCIÓN DE AUTÓMATA FINITO

Ejercicio 1: Diseñar un autómata finito que acepte una cadena formada por 4 bits, debiendo ser el primer elemento igual al tercero.

View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF