Foros del Web » Programación para mayores de 30 ;) » Java »

Ayuda Programar automatas

Estas en el tema de Ayuda Programar automatas en el foro de Java en Foros del Web. Tengo que hacer un programa qeu al ingresar una expresión regular y me tiene que imprimir su tabla de transiciones. Ando pensando como hacerle pero ...
  #1 (permalink)  
Antiguo 27/03/2010, 08:21
 
Fecha de Ingreso: marzo-2010
Mensajes: 1
Antigüedad: 14 años, 8 meses
Puntos: 0
Ayuda Programar automatas

Tengo que hacer un programa qeu al 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 alguna 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
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;

Hasta ahorit tengo este codigo

import java.io.*;
public class Automata
{
static int c1,c2; //declaro dos variables para manejar las hojas del nodo
static String er; //Variable para mi expresion regular
static int cont=0; //variable para contar las concatenaciones de la expresion regular
static int pp,up,sp; //declaro variables primerapos, ultimapos, siguientepos
static int puntero=0; //para manejarme entre las posiciones de los nodos
static boolean ban=false; //creo una bandera para indicar cuando eh ternimado de recorer todos los nodos
public static void main(String arg[])throws IOException
{
//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();

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.
Declare una variable puntero para con esa moverme entre los nodos pero todavia no se como hacerle paara qeu nomas me mueve entre los nodos y no en las hojas. Mis nodos seria la estrella (*), el and (·) o el or (|) y las hojas cualquier letra, hasta ahorita nmas estoy utilizando con a y b para primero entender la logica
Saludos y gracias de antemano cualqier ayuda me serviria bastante

Etiquetas: automatas, programación
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:25.