tamagotchi con un autómata finito

6
TAMAGOTCHI, APLICACIÓN DE TEORÍA DE AUTÓMATAS Por Ávila Marín Agustín Ortiz Meza Luis Alberto Robles Martínez Ricardo

Upload: augusto-marin

Post on 05-Jul-2015

405 views

Category:

Documents


4 download

DESCRIPTION

Aplicación de teoría de autómatas. Es el desarrollo de un Tamagotchi por medio de un autómata finito.

TRANSCRIPT

Page 1: Tamagotchi con un Autómata Finito

TAMAGOTCHI, APLICACIÓN DE TEORÍA

DE AUTÓMATAS

Por

Ávila Marín Agustín

Ortiz Meza Luis Alberto

Robles Martínez Ricardo

Page 2: Tamagotchi con un Autómata Finito

Introduccio n

Como preludio a una pequeña gota en un mar de ideas en las aplicaciones de la informática,

hablemos de los autómatas finitos (AF). Estos autómatas tienen su esencia en una función de

transiciones, la cual nos permite observar que dado un estado tal que para un símbolo

, existe sólo una transición posible.

Ahora definamos formalmente a un AFN:

Como ya se mencionó en la definición y antes de, un AF es aquel que dado un estado puede tener

más de una transición, como por ejemplo. Dado la siguiente 5-tupla:

Sea , donde , , y está dado por la

tabla siguiente:

Por podemos darnos cuenta que se trata de un AF, el cual tendría un grafo como el que a

continuación se muestra:

q0 q1 q2 q3q31 0, 1 0, 1

𝛿:𝑄 ×

Un autómata finito no determinista (AFN) es una 5-tupla 𝑀 𝑄 𝑞 𝐴 𝛿 , donde 𝑄 𝑦 son

conjuntos finitos no vacíos, 𝑞 𝑄 𝐴 ⊆ 𝑄 y

𝑄 es el conjunto de estados, es el alfabeto, 𝑞 es el estado inicial y 𝐴 es el conjunto de estados

de aceptación

Page 3: Tamagotchi con un Autómata Finito

Aná lisis y desárrollo

El primer paso para el diseño del tamagotchi, fue identificar los estados y las entradas que tendrá

el programa. Previo a eso es obtener su representación gráfica y más importante aún es obtener

su tabla de transiciones, que esto último es crucial e importante para la programación.

Nuestro tamagotchi primero que nada, tiene que nacer y después de nacer puede pasar a tres

estados posibles. Dependiendo de sus necesidades en ese momento, éste puede:

o Pedir de comer

o Pedir ir al baño

o Pedir irse a dormir

Así que aclarando las ideas, estas peticiones son meras entradas y los estados pueden ser, en base

a lo anterior:

Nacer

Tener hambre

Tener ganas de ir al baño

Tener ganas de dormir

Siendo drásticos podemos agregar a este conjunto de estados la muerte si es que no se cumplen o

satisfacen sus necesidades. Pero uno no se muere por no hacer del baño o dormir, simplemente se

hace del baño o se queda dormido. Con esta lógica el camino hacia la muerte sería no darle de

comer a nuestra mascota. Ya también añadimos otros dos estados, el estar dormido y el haberse

hecho del baño. Y que pasa cuando no necesita nada, pues está en un estado neutral, está

satisfecho. Así pues tenemos de más:

Dormido

Se hizo del baño

Satisfecho

Muerto

Ya podemos darnos una idea de cómo cuidar de este tamagotchi, dándole de comer, poniéndole

una cama, llevándolo al baño, limpiándolo. Para no hacerlo tan aburrido manejaremos unas

emergencias que constan de dos estados más de alerta para el tener hambre, ganas de ir al baño y

ganas de dormir que manejaremos como sigue:

Tener mucha hambre

Tener mucha más hambre

Tener más ganas de ir al baño

Tener muchas más ganas de ir al baño

Tener más ganas de dormir

Page 4: Tamagotchi con un Autómata Finito

Tener muchas más ganas de dormir

Esto se pone interesante, pero ¿dónde entra el usuario en la parte del cuidado? El usuario puede

generar las demás entradas, que serían:

o Dar de comer

o Poner baño

o Poner cama

o Limpiar

Antes de concluir con esta identificación de las partes del autómata no podemos permitir que esté

en un sueño eterno nuestro animalito, entonces añadamos una entrada más que será la de:

o Despertar

La cual por cierto no manejará el usuario si no el animalito propio, así como las que se

describieron al principio de este apartado, para que éste se sienta cómodo y libre de la sensación

de tener padres demasiado controladores.

En este punto tenemos identificados 14 estados y 8 entradas las cuales definiremos con su 5-tupla.

Sea , donde ,

Donde cada uno de los símbolos se representa como sigue

Se aprecia que vamos a tener una tabla de transiciones demasiado larga, y nos daremos cuenta

por lo que ya explicamos que se hará uso de un AF.

Page 5: Tamagotchi con un Autómata Finito

El grafo de transiciones entonces es el siguiente:

q0

q11

q2q9

q8

q7

q5

q3

q4

q6

q12

q1

q101

2

1

15

5

1

2

2

2

6

6

7

3

0

0

0

q13q13

4

4

4

Page 6: Tamagotchi con un Autómata Finito

Como parte de la programación, podemos declarar una matriz de enteros en donde en sus celdas

se guarde la una fila, ingeniosamente vaciaremos la tabla de transiciones; las columnas serán las

entradas y las filas serán los estados, así que solo tendríamos que tener una variable que se llame

entrada y otra estado, y el valor de estado se actualizaría a la vez que se ingresa una entrada y se

coloca la coordenada con el estado anterior. Parte del código editado en java seria como el

siguiente para la clase Autómata:

Esto sería todo en cuanto a diseño y desarrollo. Las interfaces que se decidan usar y maneras de

controlar peticiones, entradas y cambio de estado etcétera, son al gusto del desarrollador. Para

nuestro caso usamos una GUI, y un timer para controlar el tiempo de las peticiones así como una

selección aleatoria de ellas. Esto con la finalidad de hacerlo más dinámico.