|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.ObjectAF.AFabstracto
AF.AF
public class AF
Clase para la implementacion interna de un automata finito. La mayoria de sus
atributos y metodos son heredados de la superclase abstracta AFabstracto.
| Field Summary |
|---|
| Fields inherited from class AF.AFabstracto |
|---|
alfabeto, arcos, estados, finales, i, inicial, MAX_ESTADOS |
| Constructor Summary | |
|---|---|
AF(java.util.LinkedHashSet qs,
java.util.LinkedHashSet ab,
Estado i,
java.util.LinkedHashSet as,
java.util.LinkedHashSet fs)
Constructor directamente heredado de la superclase abstracta (vease AFabstracto.AFabstracto(LinkedHashSet,LinkedHashSet,Estado,LinkedHashSet,LinkedHashSet)). |
|
AF(java.lang.String af)
Constructor directamente heredado de la superclase abstracta (vease AFabstracto.AFabstracto(String)). |
|
| Method Summary | |
|---|---|
private java.util.LinkedHashSet |
calc_arcos_min(java.util.ArrayList conjs_qs,
java.util.LinkedHashSet alfabeto_min,
AF afcnx)
Obtener el conjunto de arcos/transiciones del automata minimo |
private void |
calc_distinguibles(int n,
boolean[] tabla,
java.util.Hashtable q2i,
Estado[] i2q,
AF afcnx)
Obtiene la matriz de distinguibilidad del algoritmo de minimizacion marcando (i.e. a true) las entradas correspondientes a pares de estados
equivalentes. |
private int |
calc_size(int n)
Calcula el tamanho necesario para el array que implementa la matriz de distinguibilidad del algoritmo de minimizacion |
AF |
determinizar()
Devuelve al Automata Finito Determinista (AFD) equivalente a este automata. |
java.util.LinkedHashSet |
Ecierre(java.util.Collection qs)
Calcula el E-cierre de un conjunto de estados dado |
java.util.LinkedHashSet |
Ecierre(Estado q)
Calcula el E-cierre de un estado dado |
boolean |
es_AFD_no_especificado()
Determina si se trata de un Automata Finito Determinista (AFD) pero sin exigir que este completamente especificado. |
boolean |
es_AFD()
Determina si se trata de un Automata Finito Determinista (AFD). |
boolean |
es_conexo()
Determina si se trata de un automata conexo o no. |
boolean |
es_conexo(java.util.Collection acc,
java.util.Collection inacc)
Determina si se trata de un automata conexo o no, devolviendo ademas, los conjuntos de estados accesibles e inaccesibles del automata. |
private AF |
generate_AFD_minimo(int n,
boolean[] tabla,
java.util.Hashtable q2i,
Estado[] i2q,
AF afcnx)
Construye el automata minimo resultante: ultima parte del proceso de minimizacion |
private java.util.ArrayList |
get_equivalentes(int n,
boolean[] tabla,
java.util.Hashtable q2i,
Estado[] i2q)
Devuelve los conjuntos de estados equivalentes (clases de equivalencia) en base a la matriz de distinguibilidad del algoritmo de minimizacion. |
private int |
get_xy(int n,
int x,
int y)
Dada una posicion de la matriz de distinguibilidad del algoritmo de minimizacion, calcula el indice correspondiente en el array que lo implementa. |
private void |
init_distinguibles(int n,
boolean[] tabla,
java.util.Hashtable q2i,
Estado[] i2q,
AF afcnx)
Inicializa la matriz de distinguibilidad del algoritmo de minimizacion marcando (i.e. a true) las entradas correspondientes a pares
(estado final, estado no final). |
static AF |
loadAF()
Carga un AF a partir de la especificacion en formato string almacenada en un fichero de texto. |
static AF |
loadAF(java.lang.String path)
Carga un AF a partir de la especificacion en formato string almacenada en un fichero de texto. |
AF |
minimizar()
Devuelve al Automata Minimo equivalente a este automata. |
private void |
print_distinguibles(int n,
boolean[] matriz,
java.util.Hashtable q2i,
Estado[] i2q)
Imprime la matriz de distinguibilidad. |
void |
saveAF()
Genera y almacena en un fichero de texto la especificacion en formato string del AF. |
void |
saveAF(java.lang.String path)
Genera y almacena en un fichero de texto la especificacion en formato string del AF. |
boolean |
scan(Cadena cadena)
Comprueba si el automata acepta o no una cadena de entrada |
private int |
search_conj_qs(Estado q,
java.util.ArrayList a)
Busca el conjunto de estados equivalentes en el que esta almacenado un estado dado. |
java.util.LinkedHashSet |
siguientes(java.util.Collection qs,
Terminal t)
Devuelve el conjunto de estados alcanzables desde un conjunto de estado qs
consumiendo un terminal t de la entrada. |
java.util.LinkedHashSet |
siguientes(Estado q,
Terminal t)
Devuelve el conjunto de estados alcanzables desde un estado q consumiendo
un terminal t de la entrada. |
AF |
subautomata_conexo()
Devuelve al subautomata conexo equivalente a este automata. |
private boolean |
super_es_AFD(boolean estricto)
Determina si se trata de un Automata Finito Determinista (AFD), permitiendo exigir o no que este completamente especificado. |
private boolean |
super_es_conexo(boolean store,
java.util.Collection acc,
java.util.Collection inacc)
Determina si se trata de un automata conexo o no, devolviendo ademas, si se desea, los conjuntos de estados accesibles e inaccesibles del automata. |
private boolean |
superscan(Cadena cadena,
java.util.List l,
boolean trace)
Comprueba si el automata acepta o no una cadena de entrada, posibilitando obtener la traza de las configuraciones instantaneas por las que pasa |
boolean |
trace(Cadena cadena,
java.util.List l)
Comprueba si el automata acepta o no una cadena de entrada, posibilitando obtener la traza de las configuraciones instantaneas por las que pasa |
java.util.LinkedHashSet |
unidos(java.util.Collection qs,
Terminal t)
Obtiene el conjunto de estados conectados DIRECTAMENTE con un conjunto de estados dado mediante un terminal determinado. |
java.util.LinkedHashSet |
unidos(Estado q,
Terminal t)
Obtiene el conjunto de estados conectados DIRECTAMENTE con un estado dado mediante un terminal determinado. |
| Methods inherited from class AF.AFabstracto |
|---|
check_arco, contains_arco, contains_estado, contains_terminal, create_estado, dibujar, esFinal, esInicial, get_tabla_transiciones, getAlfabeto, getArcos, getArcosPpo, getArcosPpoTerminal, getEstados, getFinales, getInicial, toString |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
| Constructor Detail |
|---|
public AF(java.lang.String af)
throws AF_Exception,
G_Exception
AFabstracto.AFabstracto(String)).
af - Especificacion del automata en formato string.
AF_Exception
G_Exception
public AF(java.util.LinkedHashSet qs,
java.util.LinkedHashSet ab,
Estado i,
java.util.LinkedHashSet as,
java.util.LinkedHashSet fs)
throws AF_Exception,
G_Exception
AFabstracto.AFabstracto(LinkedHashSet,LinkedHashSet,Estado,LinkedHashSet,LinkedHashSet)).
qs - Conjunto de estados del automataab - Alfabeto del automatai - Estado inicialas - Conjunto de arcos/transiciones del automatafs - Conjunto de estados finales
AF_Exception
G_Exception| Method Detail |
|---|
public static AF loadAF(java.lang.String path)
throws java.io.IOException,
AF_Exception,
G_Exception
path - Path completo al archivo a procesar
java.io.IOException
AF_Exception
G_Exception
public static AF loadAF()
throws java.io.IOException,
AF_Exception,
G_Exception
java.io.IOException
AF_Exception
G_Exception
public void saveAF(java.lang.String path)
throws java.io.IOException
java.io.IOException
public void saveAF()
throws java.io.IOException
java.io.IOExceptionpublic java.util.LinkedHashSet Ecierre(Estado q)
q - Estado a procesar
public java.util.LinkedHashSet Ecierre(java.util.Collection qs)
qs - Conjunto de estados a procesar
public java.util.LinkedHashSet unidos(Estado q,
Terminal t)
q - Estado origent - Terminal
q mediante un arco
etiquetado con t, o el E-cierre de q en el caso de epsilon
public java.util.LinkedHashSet unidos(java.util.Collection qs,
Terminal t)
qs - Conjunto de estados origent - Terminal
qs
mediante un arco etiquetado con t, o el E-cierre de qs
en el caso de epsilon.
public java.util.LinkedHashSet siguientes(Estado q,
Terminal t)
q consumiendo
un terminal t de la entrada. En el caso de que se trate de epsilon,
equivale al E-cierre.
q - Estado origent - Terminal a consumir
q consumiendo t,
o el E-cierre de q en el caso de epsilon
public java.util.LinkedHashSet siguientes(java.util.Collection qs,
Terminal t)
qs
consumiendo un terminal t de la entrada. En el caso de que se trate de epsilon,
equivale al E-cierre.
qs - Conjunto de estados origent - Terminal a consumir
qs consumiendo t o el E-cierre de qs
en el caso de epsilon
private boolean superscan(Cadena cadena,
java.util.List l,
boolean trace)
throws AF_Exception
cadena - Cadena a comprobarl - Lista donde se almacenarian las configuraciones instantaneas.
AVISO: la variable debe estar inicializadatrace - Switch indicando si queremos o no tambien obtener la traza
true/false segun el automata acepte o no la cadena
AF_Exception - Si en el caso del trace la lista de entrada no esta inicializada o vaciapublic boolean scan(Cadena cadena)
cadena - Cadena a comprobar
true/false segun el automata acepte o no la cadena
public boolean trace(Cadena cadena,
java.util.List l)
throws AF_Exception
cadena - Cadena a comprobarl - Lista donde se almacenaran las configuraciones instantaneas.
AVISO: la variable debe estar inicializada
true/false segun el automata acepte o no la cadena
AF_Exception - Si en el caso del trace la lista de entrada no esta inicializada o vaciaprivate boolean super_es_AFD(boolean estricto)
estricto - Switch indicando si queremos ser o no estrictos exigiendo que el automata este completamente especificado
true/false segun el automata sea o no un AFDpublic boolean es_AFD()
true/false segun el automata sea o no un AFD (exigiendo que este completamente especificado)public boolean es_AFD_no_especificado()
true/false segun el automata sea o no un AFD (sin exigir que este completamente especificado)
public AF determinizar()
throws G_Exception,
AF_Exception
G_Exception
AF_Exception
private boolean super_es_conexo(boolean store,
java.util.Collection acc,
java.util.Collection inacc)
store - Switch indicando s/n deseamos que devuelva los conjuntos de estados
accesibles e inaccesiblesacc - Conjunto donde se almacenarian los estados accesibles AVISO: la
variable debera estar inicializadainacc - Conjunto donde se almacenarian los estados inaccesibles AVISO: la
variable debe estar inicializada
true/false segun el automata sea conexo o nopublic boolean es_conexo()
true/false segun el automata sea conexo o no
public boolean es_conexo(java.util.Collection acc,
java.util.Collection inacc)
acc - Conjunto donde se almacenaran los estados accesibles AVISO: la
variable debera estar inicializadainacc - Conjunto donde se almacenaran los estados inaccesibles AVISO: la
variable debe estar inicializada
true/false segun el automata sea conexo o no
public AF subautomata_conexo()
throws G_Exception,
AF_Exception
G_Exception
AF_Exceptionprivate int calc_size(int n)
n - Numero de estados del automata a minimizar
private int get_xy(int n,
int x,
int y)
n - Numero de estados del automatax - Coordenada x de la posicion de la matrixy - Coordenada y de la posicion de la matrix
private void init_distinguibles(int n,
boolean[] tabla,
java.util.Hashtable q2i,
Estado[] i2q,
AF afcnx)
true) las entradas correspondientes a pares
(estado final, estado no final).
n - Numero de estados del automatatabla - Array que implementa la matriz de distinguibilidadq2i - Hash id. estado::indice en matrizi2q - Hash (array) indice en matriz::id. estadoafcnx - Automata
private void print_distinguibles(int n,
boolean[] matriz,
java.util.Hashtable q2i,
Estado[] i2q)
n - Numero de estados del automatamatriz - Array que implementa la matriz de distinguibilidadq2i - Hash id. estado::indice en matrizi2q - Hash (array) indice en matriz::id. estado
private int search_conj_qs(Estado q,
java.util.ArrayList a)
q - Estado a buscara - Lista de conjuntos de estados equivalentes en los que buscar
-1 si no lo encuentra
private void calc_distinguibles(int n,
boolean[] tabla,
java.util.Hashtable q2i,
Estado[] i2q,
AF afcnx)
true) las entradas correspondientes a pares de estados
equivalentes.
n - Numero de estados del automatatabla - Array que implementa la matriz de distinguibilidadq2i - Hash id. estado::indice en matrizi2q - Hash (array) indice en matriz::id. estadoafcnx - Automata (conexo) a minimizar
private java.util.ArrayList get_equivalentes(int n,
boolean[] tabla,
java.util.Hashtable q2i,
Estado[] i2q)
n - Numero de estados del automatatabla - Array que implementa la matriz de distinguibilidadq2i - Hash id. estado::indice en matrizi2q - Hash (array) indice en matriz::id. estado
private java.util.LinkedHashSet calc_arcos_min(java.util.ArrayList conjs_qs,
java.util.LinkedHashSet alfabeto_min,
AF afcnx)
conjs_qs - Lista de conjuntos de estados equivalentes (clases de equivalencia) del
automata originalalfabeto_min - alfabeto del automata minimoafcnx - Automata (conexo) a minimizar
private AF generate_AFD_minimo(int n,
boolean[] tabla,
java.util.Hashtable q2i,
Estado[] i2q,
AF afcnx)
n - Numero de estados del automatatabla - Array que implementa la matriz de distinguibilidadq2i - Hash id. estado::indice en matrizi2q - Hash (array) indice en matriz::id. estadoafcnx - Automata (conexo) a minimizar
public AF minimizar()
throws AF_Exception
AF_Exception - Si el automata no cumple las precondiciones: ser determinista completamente especificado
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||