Fecha y hora actual: Mar 07 Sep, 2010 21:26 pm
Índice del Foro

Foros de programación informática, diseño gráfico y Web

En esta comunidad intentaremos dar soporte de programación a todos los niveles, desde principiantes a profesionales de la informática, desarrollo de programas, programación web y mucho más.

Ayuda Programar automatas

Responder al Tema

Índice del Foro > Java > Ayuda Programar automatas

Autor Mensaje
cypres_snk



Registrado: 26 Mar 2010
Mensajes: 9

Mensaje Publicado: Vie 26 Mar, 2010 22:26 pm

Título del mensaje: Ayuda Programar automatas

Responder citando

Bueno pues hace 4 dias me dejaron un programa qeu lo que tengo qeu hacer es ingresar una expresión regular y me tiene que imprimir su tabla de transiciones. Ando pensando como hacerle pero sigo sin ideas no busco qeu me pasen el programa resuelto sino algun libro o pagina donde venga ejemplos para programar algo asi o alguna informacion seria de mucha ayuda.

Un ejemplo seria meter la expresión: (a|b)ab*
y me imprima la tabla:
a b
A B B
B B Z
que serian los conjutos creados después de sacar primerapos, ultimapos y siguientepos y de hay crearía mis conjuntos. Espero haberme explicado bien.


Lo qeu todavia no entiendo bien para manejar las posiciones e imprimir la tabla ya qeu todo el proceso lo hago por un dibujo de un automata o ya sea un arbol de un automata

De antemano gracias y cualquier ayuda es de mucha ayuda


Creo que la regue un poco... Lo que en si tengo qeu hacer sacar el primerapos, ultimapos y siguientepos; y ya de ahy crear los conjuntos pero el problema es lo mismo no le entiendo muy bien como manejar las posiciones del automata aunqeu la logica para sacar el PP UP y SP si;

Tengo pensado poner una varibale N qeu sea el nodo, C1 qeu seria la hoja izquierda, C2 la hoja derecha, una PP qeu seria primerapos, una UP que seria ultimapos y otra SP qeu seria siguientepos.
la Logica que tengo que si tengo un or(|) N=C1UC2 -->c1 union c2;
si tengo una estrella(*) N=C1 (que seria su unica hoja).
Y si tengo un and(·) se haria algo como lo siguiente:
Para sacar PP(Primerapos):
if(C1==true)
{
PP=C1UC2; //Indico que si c1 es anulable(una estrella *) la PP seria la union de las hojas
PP=N; //Hago PP igual al nodo para indicar donde se guarda PP
}
else
{
PP=C1;
PP=N
}
Para sacar UP(Ultimapos)
if(c2==true)
{
UP=C12UC2;
UP=N
}
else
{
UP=C2;
}
Y Para sacar SP(Siguientepos)
if(N=='*')
{
UP[N]=PP[N]; //Si el nodo es un * a la ultimapos del nodo le guardo la primerapos del mismo nodo
}
if(N=='·')
{
UP[C1]=PP[C2]; //Si el nodo es un and · a la ultimapos de su hoja izq le gurdo el valor de la primerapos de su hoja derecha
}

y todo lo manejaria con pilas
pero no se como acomodar mi codigo ya que no eh trabajado mucho con programas como en los if qeu tengo N==* y N==· no tengo idea como acomodarlo si podria ser pro posiciones (PILAS) y manejarlas como true y false o como.
Cualquier idea bienvenida
De anteman
o gracias




bueno siguiendo buscando y pensandole llebo este codigo:
import java.io.*;
public class Automata
{
static int c1,c2;
public static void main(String arg[])throws IOException
{
String er; //Variable para mi expresion regular
int cont=0; //variable para contar las concatenaciones de la expresion regular
int pp,up,sp; //declaro variables primerapos, ultimapos, siguientepos
int c1,c2; //declaro dos variables para manejar las hojas del nodo
//char alf[]={'a','b','c','d','e','f','g','h','i','j','k','l','m','n','ñ','o','p','q','r','s','t','u','v','w','x','y','z'};
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
System.out.println("Ingrese Expresion Regular");
er=br.readLine();
try
{
if(er.charAt(0)!='a' || er.charAt(0)!='b')
{
System.out.println("Expresion regular incorrecta");
}
}
catch(){}
for(int i=0; i<er.length(); i++)
{
if(er.charAt(i)=='a' || er.charAt(i)=='b')
{
cont++; //contabiliso el numero de letras de la expresion para saber cuando nodos de concatenacion tendra el automata
}
if(er.charAt(i)=='|')
{
cont--; //si la expresion tiene un | disminuye uno ya qeu es uno u otro pero no ambos
}
}
int Nodo[]=new int[cont]; //la longitud del arreglo es el numero de caracteres de mi variable er



}
}

lo qeu voy haaciendo es contar el numero de concatenaciones qeu pueda tener mi expresion para saber por cuantos nodos me tengo qeu mover nomas qeu una de mis dudas es como le voy a hacer para moverme entre los nodos y manejar las "hojas" de cada nodo, ya que es una simulacion de un arbol... Mis hojas seria c1 y c2 recuerdo algo como hacerle Nodo.c1 y Nodo.c2 pero no logro saber como programarlo.
Saludos y gracias nuevamente

Volver arriba
Ver perfil del usuario Enviar mensaje privado
Dave



Registrado: 16 May 2010
Mensajes: 1

Mensaje Publicado: Dom 16 May, 2010 21:03 pm

Título del mensaje: Re: Ayuda Programar automatas

Responder citando

que tal compañero!!!

Saludos desde Guatemala!!! Reir

Buscando en la web, me tope con tu post, y me asombre muchisimo, ya que mi proyecto de la universidad es exactamente igual igual igual al tuyo..... Ojos

La diferencia que yo lo voy a desarrollar en vb .net , bueno ayer sabado me dejaron dicho proyecto, esta semana empiezo con el analisis y a recopilar informacion para el mismo....cualquier cosa que valla encontrando con mucho gusto te lo comparto.......

Seguimos en contacto....saludos!!! Super

Volver arriba
Ver perfil del usuario Enviar mensaje privado
cypres_snk



Registrado: 26 Mar 2010
Mensajes: 9

Mensaje Publicado: Lun 17 May, 2010 22:36 pm

Título del mensaje: Re: Ayuda Programar automatas

Responder citando

Perfecto yo ya lo tube que haber entregado pero no logre hacerlo y como muchos no lo pudimos hacer sigo con la duda je
saludos

Volver arriba
Ver perfil del usuario Enviar mensaje privado
Responder al Tema
Mostrar mensajes anteriores:   
Ir a:  
Todas las horas están en GMT + 2 Horas

Temas relacionados

Tema Autor Foros Respuestas Publicado
El foro no contiene ningún mensaje nuevo

Ayuda con secuencia de instalación .BAT

DanteSantana Programación en general 4 Dom 05 Sep, 2010 10:30 am Ver último mensaje
El foro no contiene ningún mensaje nuevo

Programa de encuestas AYUDA

Igna_775 C, C#, Visual C++ 1 Dom 29 Ago, 2010 23:15 pm Ver último mensaje
El foro no contiene ningún mensaje nuevo

Ayuda por favoooor

thewalker Temas generales 4 Mie 25 Ago, 2010 19:05 pm Ver último mensaje
El foro no contiene ningún mensaje nuevo

Ayuda chat en C que muestre la llegada del mens...

Luis Armando C, C#, Visual C++ 1 Sab 21 Ago, 2010 19:59 pm Ver último mensaje
El foro no contiene ningún mensaje nuevo

ayuda arrancadores

ordsystem Programación en general 1 Jue 19 Ago, 2010 02:34 am Ver último mensaje
Panel de Control
No puede crear mensajes, No puede responder temas, No puede editar sus mensajes, No puede borrar sus mensajes, No puede votar en encuestas,